[arch-releng] [PATCH 09/10] Use a default pacman.conf to build releng images

Gerardo Exequiel Pozzi vmlinuz386 at yahoo.com.ar
Sat Jun 23 19:10:19 EDT 2012


On 06/23/2012 06:40 AM, Pierre Schmitz wrote:
> This ensures we do not pick up any testing or third party repos from the host.
>
> Signed-off-by: Pierre Schmitz <pierre at archlinux.de>
> ---
>   configs/releng/build.sh    | 33 ++++++++--------
>   configs/releng/pacman.conf | 96 ++++++++++++++++++++++++++++++++++++++++++++++
>   2 Dateien geändert, 113 Zeilen hinzugefügt(+), 16 Zeilen entfernt(-)
>   create mode 100644 configs/releng/pacman.conf
>
> diff --git a/configs/releng/build.sh b/configs/releng/build.sh
> index 3cdbbf0..73f80fe 100755
> --- a/configs/releng/build.sh
> +++ b/configs/releng/build.sh
> @@ -13,16 +13,17 @@ verbose=""
>   cmd_args=""
>   
>   script_path=$(readlink -f ${0%/*})
> +pacman_conf="${script_path}/pacman.conf"
>   
>   # Base installation (root-image)
>   make_basefs() {
> -    mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" init
> -    mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" -p "memtest86+ mkinitcpio-nfs-utils nbd curl" install
> +    mkarchiso ${verbose} -w "${work_dir}" -C "${pacman_conf}" -D "${install_dir}" init
> +    mkarchiso ${verbose} -w "${work_dir}" -C "${pacman_conf}" -D "${install_dir}" -p "memtest86+ mkinitcpio-nfs-utils nbd curl" install
>   }
>   
>   # Additional packages (root-image)
>   make_packages() {
> -    mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" -p "$(grep -v ^# ${script_path}/packages.${arch})" install
> +    mkarchiso ${verbose} -w "${work_dir}" -C "${pacman_conf}" -D "${install_dir}" -p "$(grep -v ^# ${script_path}/packages.${arch})" install
>   }
>   
>   # Copy mkinitcpio archiso hooks (root-image)
> @@ -47,7 +48,7 @@ make_boot() {
>           local _src=${work_dir}/root-image
>           local _dst_boot=${work_dir}/iso/${install_dir}/boot
>           mkdir -p ${_dst_boot}/${arch}
> -        mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" \
> +        mkarchiso ${verbose} -w "${work_dir}" -C "${pacman_conf}" -D "${install_dir}" \
>               -r 'mkinitcpio -c /etc/mkinitcpio-archiso.conf -k /boot/vmlinuz-linux -g /boot/archiso.img' \
>               run
>           mv ${_src}/boot/archiso.img ${_dst_boot}/${arch}/archiso.img
> @@ -139,10 +140,10 @@ make_customize_root_image() {
>           wget -O ${work_dir}/root-image/etc/pacman.d/mirrorlist 'https://www.archlinux.org/mirrorlist/?country=all&protocol=http&use_mirror_status=on'
>           sed -i "s/#Server/Server/g" ${work_dir}/root-image/etc/pacman.d/mirrorlist
>           sed -i 's/#\(en_US\.UTF-8\)/\1/' ${work_dir}/root-image/etc/locale.gen
> -        mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" \
> +        mkarchiso ${verbose} -w "${work_dir}" -C "${pacman_conf}" -D "${install_dir}" \
>               -r 'locale-gen' \
>               run
> -        mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" \
> +        mkarchiso ${verbose} -w "${work_dir}" -C "${pacman_conf}" -D "${install_dir}" \
>               -r 'useradd -m -p "" -g users -G "audio,disk,optical,wheel" arch' \
>               run
>           : > ${work_dir}/build.${FUNCNAME}
> @@ -172,12 +173,12 @@ make_core_repo() {
>           mkdir -p ${work_dir}/repo-core-any
>           mkdir -p ${work_dir}/repo-core-${arch}
>           mkdir -p ${work_dir}/pacman.db/var/lib/pacman
> -        pacman -Sy -r ${work_dir}/pacman.db
> -        _pkgs=$(comm -2 -3 <(pacman -Sql -r ${work_dir}/pacman.db core | sort | sed 's@^@core/@') \
> +        pacman --config "${pacman_conf}" -Sy -r ${work_dir}/pacman.db
> +        _pkgs=$(comm -2 -3 <(pacman --config "${pacman_conf}" -Sql -r ${work_dir}/pacman.db core | sort | sed 's@^@core/@') \
>                              <(grep -v ^# ${script_path}/core.exclude.${arch} | sort | sed 's@^@core/@'))
> -        _urls=$(pacman -Sddp -r ${work_dir}/pacman.db ${_pkgs})
> -        pacman -Swdd -r ${work_dir}/pacman.db --noprogressbar --noconfirm ${_pkgs}
> -        _cache_dirs=($(pacman -v 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g'))
> +        _urls=$(pacman --config "${pacman_conf}" -Sddp -r ${work_dir}/pacman.db ${_pkgs})
> +        pacman --config "${pacman_conf}" -Swdd -r ${work_dir}/pacman.db --noprogressbar --noconfirm ${_pkgs}
> +        _cache_dirs=($(pacman --config "${pacman_conf}" -v 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g'))
>           for _url in ${_urls}; do
>               _pkg_name=${_url##*/}
>               _dst=${work_dir}/repo-core-${arch}/${_pkg_name}
> @@ -199,7 +200,7 @@ make_core_repo() {
>           # Remove old copy of db file
>           rm -f ${work_dir}/repo-core-${arch}/core.db.tar.gz.old
>           mkdir -p ${work_dir}/iso/${install_dir}
> -        pacman -Sp -r ${work_dir}/pacman.db --print-format "%r/%n-%v" ${_pkgs} | sort > ${work_dir}/iso/${install_dir}/pkglist.repo-core.${arch}.txt
> +        pacman --config "${pacman_conf}" -Sp -r ${work_dir}/pacman.db --print-format "%r/%n-%v" ${_pkgs} | sort > ${work_dir}/iso/${install_dir}/pkglist.repo-core.${arch}.txt
>           : > ${work_dir}/build.${FUNCNAME}
>       fi
>   }
> @@ -216,16 +217,16 @@ make_aitab() {
>   
>   # Build all filesystem images specified in aitab (.fs .fs.sfs .sfs)
>   make_prepare() {
> -    mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" pkglist
> -    mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" prepare
> +    mkarchiso ${verbose} -w "${work_dir}" -C "${pacman_conf}" -D "${install_dir}" pkglist
> +    mkarchiso ${verbose} -w "${work_dir}" -C "${pacman_conf}" -D "${install_dir}" prepare
>   }
>   
>   # Build ISO
>   # args: $1 (core | netinstall)
>   make_iso() {
>       local _iso_type=${1}
> -    mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" checksum
> -    mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" -L "${iso_label}" -o "${out_dir}" iso "${iso_name}-${iso_version}-${_iso_type}-${arch}.iso"
> +    mkarchiso ${verbose} -w "${work_dir}" -C "${pacman_conf}" -D "${install_dir}" checksum
> +    mkarchiso ${verbose} -w "${work_dir}" -C "${pacman_conf}" -D "${install_dir}" -L "${iso_label}" -o "${out_dir}" iso "${iso_name}-${iso_version}-${_iso_type}-${arch}.iso"
>   }
>   
>   # Build dual-iso images from ${work_dir}/i686/iso and ${work_dir}/x86_64/iso
> diff --git a/configs/releng/pacman.conf b/configs/releng/pacman.conf
> new file mode 100644
> index 0000000..821f9a5
> --- /dev/null
> +++ b/configs/releng/pacman.conf
> @@ -0,0 +1,96 @@
> +#
> +# /etc/pacman.conf
> +#
> +# See the pacman.conf(5) manpage for option and repository directives
> +
> +#
> +# GENERAL OPTIONS
> +#
> +[options]
> +# The following paths are commented out with their default values listed.
> +# If you wish to use different paths, uncomment and update the paths.
> +#RootDir     = /
> +#DBPath      = /var/lib/pacman/
> +#CacheDir    = /var/cache/pacman/pkg/
> +#LogFile     = /var/log/pacman.log
> +#GPGDir      = /etc/pacman.d/gnupg/
> +HoldPkg     = pacman glibc
> +# If upgrades are available for these packages they will be asked for first
> +SyncFirst   = pacman
> +#XferCommand = /usr/bin/curl -C - -f %u > %o
> +#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
> +#CleanMethod = KeepInstalled
> +Architecture = auto
> +
> +# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
> +#IgnorePkg   =
> +#IgnoreGroup =
> +
> +#NoUpgrade   =
> +#NoExtract   =
> +
> +# Misc options
> +#UseSyslog
> +#UseDelta
> +#TotalDownload
> +# We cannot check disk space from within a chroot environment
> +#CheckSpace
> +#VerbosePkgLists
> +
> +# By default, pacman accepts packages signed by keys that its local keyring
> +# trusts (see pacman-key and its man page), as well as unsigned packages.
> +#SigLevel = Optional TrustedOnly
> +
> +# NOTE: You must run `pacman-key --init` before first using pacman; the local
> +# keyring can then be populated with the keys of all official Arch Linux
> +# packagers with `pacman-key --populate archlinux`.
> +
> +#
> +# REPOSITORIES
> +#   - can be defined here or included from another file
> +#   - pacman will search repositories in the order defined here
> +#   - local/custom mirrors can be added here or in separate files
> +#   - repositories listed first will take precedence when packages
> +#     have identical names, regardless of version number
> +#   - URLs will have $repo replaced by the name of the current repo
> +#   - URLs will have $arch replaced by the name of the architecture
> +#
> +# Repository entries are of the format:
> +#       [repo-name]
> +#       Server = ServerName
> +#       Include = IncludePath
> +#
> +# The header [repo-name] is crucial - it must be present and
> +# uncommented to enable the repo.
> +#
> +
> +# The testing repositories are disabled by default. To enable, uncomment the
> +# repo name header and Include lines. You can add preferred servers immediately
> +# after the header, and they will be used before the default mirrors.
> +
> +#[testing]
> +#SigLevel = PackageRequired
> +#Include = /etc/pacman.d/mirrorlist
> +
> +[core]
> +SigLevel = PackageRequired
> +Include = /etc/pacman.d/mirrorlist
> +
> +[extra]
> +SigLevel = PackageRequired
> +Include = /etc/pacman.d/mirrorlist
> +
> +#[community-testing]
> +#SigLevel = PackageRequired
> +#Include = /etc/pacman.d/mirrorlist
> +
> +[community]
> +SigLevel = PackageRequired
> +Include = /etc/pacman.d/mirrorlist
> +
> +# An example of a custom package repository.  See the pacman manpage for
> +# tips on creating your own repositories.
> +#[custom]
> +#SigLevel = Optional TrustAll
> +#Server = file:///home/custompkgs
> +

+1, this was on my TODO, thanks.

-- 
Gerardo Exequiel Pozzi
\cos^2\alpha + \sin^2\alpha = 1



More information about the arch-releng mailing list