diff options
Diffstat (limited to 'makechrootpkg.in')
-rw-r--r-- | makechrootpkg.in | 117 |
1 files changed, 59 insertions, 58 deletions
diff --git a/makechrootpkg.in b/makechrootpkg.in index 3f1e1e1..ad5e3d9 100644 --- a/makechrootpkg.in +++ b/makechrootpkg.in @@ -67,60 +67,6 @@ usage() { exit 1 } -orig_argv=("$@") - -while getopts 'hcur:I:l:nTD:d:' arg; do - case "$arg" in - c) clean_first=true ;; - D) bindmounts_ro+=(--bind-ro="$OPTARG") ;; - d) bindmounts_rw+=(--bind="$OPTARG") ;; - u) update_first=true ;; - r) passeddir="$OPTARG" ;; - I) install_pkgs+=("$OPTARG") ;; - l) copy="$OPTARG" ;; - n) run_namcap=true; makepkg_args+=(-i) ;; - T) temp_chroot=true; copy+="-$$" ;; - h|*) usage ;; - esac -done - -[[ ! -f PKGBUILD && -z "${install_pkgs[*]}" ]] && die 'This must be run in a directory containing a PKGBUILD.' - -check_root "$0" "${orig_argv[@]}" - -# Canonicalize chrootdir, getting rid of trailing / -chrootdir=$(readlink -e "$passeddir") -[[ ! -d $chrootdir ]] && die "No chroot dir defined, or invalid path '%s'" "$passeddir" -[[ ! -d $chrootdir/root ]] && die "Missing chroot dir root directory. Try using: mkarchroot %s/root base-devel" "$chrootdir" - -# Detect chrootdir filesystem type -chroottype=$(stat -f -c %T "$chrootdir") - -if [[ ${copy:0:1} = / ]]; then - copydir=$copy -else - copydir="$chrootdir/$copy" -fi - -# Pass all arguments after -- right to makepkg -makepkg_args+=("${@:$OPTIND}") - -# See if -R was passed to makepkg -for arg in "${@:OPTIND}"; do - case ${arg%%=*} in - -*R*|--repackage) - repack=true - break 2 - ;; - esac -done - -if [[ -n $SUDO_USER ]]; then - eval "USER_HOME=~$SUDO_USER" -else - USER_HOME=$HOME -fi - # {{{ functions load_vars() { local makepkg_conf="$1" var @@ -208,10 +154,11 @@ prepare_chroot() { echo 'BUILDDIR="/build"' >> "$copydir/etc/makepkg.conf" fi - # Read .makepkg.conf and .gnupg/pubring.gpg even if called via sudo - if [[ -r "$USER_HOME/.gnupg/pubring.gpg" ]]; then - install -D "$USER_HOME/.gnupg/pubring.gpg" \ - "$copydir/build/.gnupg/pubring.gpg" + # Read .makepkg.conf and gnupg pubring + if [[ -r $USER_HOME/.gnupg/pubring.kbx ]]; then + install -D "$USER_HOME/.gnupg/pubring.kbx" "$copydir/build/.gnupg/pubring.kbx" + elif [[ -r $USER_HOME/.gnupg/pubring.gpg ]]; then + install -D "$USER_HOME/.gnupg/pubring.gpg" "$copydir/build/.gnupg/pubring.gpg" fi mkdir -p "$copydir/pkgdest" @@ -364,6 +311,60 @@ move_products() { } # }}} +orig_argv=("$@") + +while getopts 'hcur:I:l:nTD:d:' arg; do + case "$arg" in + c) clean_first=true ;; + D) bindmounts_ro+=(--bind-ro="$OPTARG") ;; + d) bindmounts_rw+=(--bind="$OPTARG") ;; + u) update_first=true ;; + r) passeddir="$OPTARG" ;; + I) install_pkgs+=("$OPTARG") ;; + l) copy="$OPTARG" ;; + n) run_namcap=true; makepkg_args+=(-i) ;; + T) temp_chroot=true; copy+="-$$" ;; + h|*) usage ;; + esac +done + +[[ ! -f PKGBUILD && -z "${install_pkgs[*]}" ]] && die 'This must be run in a directory containing a PKGBUILD.' + +check_root "$0" "${orig_argv[@]}" + +# Canonicalize chrootdir, getting rid of trailing / +chrootdir=$(readlink -e "$passeddir") +[[ ! -d $chrootdir ]] && die "No chroot dir defined, or invalid path '%s'" "$passeddir" +[[ ! -d $chrootdir/root ]] && die "Missing chroot dir root directory. Try using: mkarchroot %s/root base-devel" "$chrootdir" + +# Detect chrootdir filesystem type +chroottype=$(stat -f -c %T "$chrootdir") + +if [[ ${copy:0:1} = / ]]; then + copydir=$copy +else + copydir="$chrootdir/$copy" +fi + +# Pass all arguments after -- right to makepkg +makepkg_args+=("${@:$OPTIND}") + +# See if -R was passed to makepkg +for arg in "${@:OPTIND}"; do + case ${arg%%=*} in + -*R*|--repackage) + repack=true + break 2 + ;; + esac +done + +if [[ -n $SUDO_USER ]]; then + eval "USER_HOME=~$SUDO_USER" +else + USER_HOME=$HOME +fi + umask 0022 load_vars "$USER_HOME/.makepkg.conf" |