From e9bc885c355babf7851de31db8e1920dde752993 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 7 Nov 2012 00:17:08 -0500 Subject: organize the files --- src/chroot-tools/libremakepkg | 126 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100755 src/chroot-tools/libremakepkg (limited to 'src/chroot-tools/libremakepkg') diff --git a/src/chroot-tools/libremakepkg b/src/chroot-tools/libremakepkg new file mode 100755 index 0000000..f7924f6 --- /dev/null +++ b/src/chroot-tools/libremakepkg @@ -0,0 +1,126 @@ +#!/bin/bash +# Copyright 2010 - 2011 Nicolás Reynolds +# Copyright 2011 Joshua Ismael Haase Hernández + +# ---------- GNU General Public License 3 ---------- + +# This file is part of Parabola. + +# Parabola is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# Parabola is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with Parabola. If not, see . + + +# set -x # uncomment for debug + +function copy_log { # copy logs if they exist + + find "${CHROOTDIR}/${CHROOT}/build/" -maxdepth 1 -name "*\.log" -exec cp {} ./ \; + +} + + +function trap_exit { # End inmediately but print a useful message + + copy_log + error "$@" + exit 1 + +} + +# Trap signals from makepkg +set -E +trap 'trap_exit "(libremakepkg): TERM signal caught. Exiting..."' TERM HUP QUIT +trap 'trap_exit "(libremakepkg): Aborted by user! Exiting..."' INT +trap 'trap_exit "(libremakepkg): An unknown error has occurred. Exiting..."' ERR + +source /etc/libretools.conf + +CLEANFIRST="false" +UPDATEFIRST="false" +CHECKNONFREE="true" +LIBRECHROOT_ARGS="" +MAKEPKG_ARGS="" + +function usage { + + echo '' + echo 'cd to a dir containing a PKGBUILD and run:' + echo '$0 [options] [-- makechrootpkg args [-- makepkg args]]' + echo 'This script will build your package on a chroot.' + echo '' + echo 'OPTIONS:' + echo '' + echo ' -h : show this message.' + echo ' -c : clean the chroot before building.' + echo ' -u : update the chroot before building.' + echo ' -d : use this dir instead of "$CHROOTDIR"' + echo ' -n : use this dir instead of "$CHROOT".' + echo ' -N : do not check freedom issues' # As fullpkg-check will do that before + echo '' + exit 1 + +} + +while getopts 'hcud:n:N' arg ; do + case "${arg}" in + h) usage ;; + c) CLEANFIRST="true" ;; + u) UPDATEFIRST="true" ;; + d) CHROOTDIR="$OPTARG" + LIBRECHROOT_ARGS='-d "$OPTARG"' ;; + n) CHROOT="$OPTARG" ;; + N) CHECKNONFREE="false" ;; + esac +done + +# Pass all arguments after -- right to makechrootpkg +MAKEPKG_ARGS="$makepkg_args ${*:$OPTIND}" + +if (( EUID )); then + error "This script must be run as root" + exit 1 +fi + +if [ ! -e PKGBUILD ]; then # Check if we are actually on a build directory. Do this early. + error "This isn't a build directory"; usage +fi + +msg "Checking PKGBUILD for non-free issues" +if "$CHECKNONFREE"; then + if ! pkgbuild-check-nonfree; then + + if [[ $? -eq 15 ]]; then # other errors mean fail, not nonfree + error "PKGBUILD contains non-free issues" + exit 15 + else + warning "PKGBUILD couldn't be check aganist non-free issues" + fi + fi +fi + +if "$CLEANFIRST"; then + librechroot -c "$LIBRECHROOT_ARGS" "$CHROOT" +fi + +if "$UPDATEFIRST"; then + librechroot -u "$LIBRECHROOT_ARGS" "$CHROOT" +fi + +unset CLEANFIRST UPDATEFIRST LIBRECHROOT_ARGS + +makechrootpkg -d -r "$CHROOTDIR" -l "$CHROOT" -- $MAKEPKG_ARGS +ev="$?" # exit value + +copy_log + +exit $ev -- cgit v1.2.3-2-g168b From 16e41597e98333f6383a3cb9aa6e9371f64522bf Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 12 Nov 2012 17:32:40 -0500 Subject: chroot-tools: clean up, make play nice with new devtools * buildenv: delete; this is done by `mkarchroot` * librechroot: - adopt `archbuild`'s concept of CHROOT and CHROOTCOPY - add `-l` option to set the CHROOTCOPY * libremakepkg: - adopt `archbuild`'s concept of CHROOT and CHROOTCOPY - add `-l` option to set the CHROOTCOPY - pass options to `makechrootpkg` and `makepkg` the way `-h` always said it did * libremkchroot: - adopt `archbuild`'s concept of CHROOT and CHROOTCOPY - remove `-c` option to set the pacman cache - remove `-f` option to force overwrite --- src/chroot-tools/libremakepkg | 195 ++++++++++++++++++++++-------------------- 1 file changed, 104 insertions(+), 91 deletions(-) (limited to 'src/chroot-tools/libremakepkg') diff --git a/src/chroot-tools/libremakepkg b/src/chroot-tools/libremakepkg index f7924f6..69e8998 100755 --- a/src/chroot-tools/libremakepkg +++ b/src/chroot-tools/libremakepkg @@ -1,6 +1,10 @@ #!/bin/bash +# libremakepkg +# analogous to devtools' archbuild + # Copyright 2010 - 2011 Nicolás Reynolds # Copyright 2011 Joshua Ismael Haase Hernández +# Copyright 2012 Luke Shumaker # ---------- GNU General Public License 3 ---------- @@ -19,108 +23,117 @@ # You should have received a copy of the GNU General Public License # along with Parabola. If not, see . +. /etc/libretools.conf -# set -x # uncomment for debug - -function copy_log { # copy logs if they exist - - find "${CHROOTDIR}/${CHROOT}/build/" -maxdepth 1 -name "*\.log" -exec cp {} ./ \; - +## +# copy logs if they exist +## +copy_log() { + find "${chroot_path}/build/" -maxdepth 1 -name "*\.log" -exec cp {} ./ \; } - -function trap_exit { # End inmediately but print a useful message - - copy_log - error "$@" - exit 1 - +## +# End inmediately but print a useful message +## +trap_exit() { + copy_log + error "$@" + exit 1 } -# Trap signals from makepkg -set -E -trap 'trap_exit "(libremakepkg): TERM signal caught. Exiting..."' TERM HUP QUIT -trap 'trap_exit "(libremakepkg): Aborted by user! Exiting..."' INT -trap 'trap_exit "(libremakepkg): An unknown error has occurred. Exiting..."' ERR - -source /etc/libretools.conf - -CLEANFIRST="false" -UPDATEFIRST="false" -CHECKNONFREE="true" -LIBRECHROOT_ARGS="" -MAKEPKG_ARGS="" - -function usage { - - echo '' +usage() { echo 'cd to a dir containing a PKGBUILD and run:' echo '$0 [options] [-- makechrootpkg args [-- makepkg args]]' - echo 'This script will build your package on a chroot.' + echo 'This script will build your package in a chroot.' echo '' echo 'OPTIONS:' + echo ' -h Show this message' echo '' - echo ' -h : show this message.' - echo ' -c : clean the chroot before building.' - echo ' -u : update the chroot before building.' - echo ' -d : use this dir instead of "$CHROOTDIR"' - echo ' -n : use this dir instead of "$CHROOT".' - echo ' -N : do not check freedom issues' # As fullpkg-check will do that before + echo ' -c Clean the chroot before building' + echo ' -u Update the chroot before building' + echo ' -N Do not check freedom issues (for fullpkg)' echo '' - exit 1 + echo " -d Use this dir instead of \`$CHROOTDIR'" + echo " -n Use this chroot instead of \`$CHROOT'" + echo ' -l Use this chroot copy instead of basing it' + echo ' on the username' +} +main() { + # The logic for setting CHROOTCOPY is mirred from makechrootpkg + CHROOTCOPY=$USER + [[ -n $SUDO_USER ]] && CHROOTCOPY=$SUDO_USER + [[ -z $CHROOTCOPY || $CHROOTCOPY = root ]] && CHROOTCOPY=copy + + CLEANFIRST=false + UPDATEFIRST=false + CHECKNONFREE=true + + makechrootpkg_args=() + + while getopts 'hcuNd:n:l:' arg ; do + case "${arg}" in + c) CLEANFIRST=true;; + u) UPDATEFIRST=true;; + N) CHECKNONFREE=false;; + + d) CHROOTDIR=$OPTARG;; + n) CHROOT=$OPTARG;; + l) CHROOTCOPY=$OPTARG;; + + h) usage; exit 0;; + *) usage; exit 1;; + esac + done + shift $(($OPTIND - 1)) + # Pass all arguments after -- right to makechrootpkg + makechrootpkg_args+=("$@") + + if (( EUID )); then + error "This script must be run as root" + exit 1 + fi + + if [[ ! -e PKGBUILD ]]; then + error "This isn't a build directory" + exit 1 + fi + + # OK, we're starting now ############################################### + + # Trap signals from makepkg + set -E + trap 'trap_exit "(libremakepkg): TERM signal caught. Exiting..."' TERM HUP QUIT + trap 'trap_exit "(libremakepkg): Aborted by user! Exiting..."' INT + trap 'trap_exit "(libremakepkg): An unknown error has occurred. Exiting..."' ERR + + if $CHECKNONFREE; then + msg "Checking PKGBUILD for non-free issues" + if ! pkgbuild-check-nonfree; then + if [[ $? -eq 15 ]]; then + # other errors mean fail, not nonfree + error "PKGBUILD contains non-free issues" + exit 15 + else + warning "PKGBUILD couldn't be check aganist non-free issues" + fi + fi + fi + + if $CLEANFIRST; then + librechroot -c -d "$CHROOTDIR" -l "$CHROOTCOPY" "$CHROOT" + fi + + if $UPDATEFIRST; then + librechroot -u -d "$CHROOTDIR" -l "$CHROOTCOPY" "$CHROOT" + fi + + unset CLEANFIRST UPDATEFIRST librechroot_args + + makechrootpkg "${makechrootpkg_args[@]}" -d -r "$CHROOTDIR/${CHROOT}" -l "$CHROOTCOPY" + ev=$? # exit value + copy_log + exit $ev } -while getopts 'hcud:n:N' arg ; do - case "${arg}" in - h) usage ;; - c) CLEANFIRST="true" ;; - u) UPDATEFIRST="true" ;; - d) CHROOTDIR="$OPTARG" - LIBRECHROOT_ARGS='-d "$OPTARG"' ;; - n) CHROOT="$OPTARG" ;; - N) CHECKNONFREE="false" ;; - esac -done - -# Pass all arguments after -- right to makechrootpkg -MAKEPKG_ARGS="$makepkg_args ${*:$OPTIND}" - -if (( EUID )); then - error "This script must be run as root" - exit 1 -fi - -if [ ! -e PKGBUILD ]; then # Check if we are actually on a build directory. Do this early. - error "This isn't a build directory"; usage -fi - -msg "Checking PKGBUILD for non-free issues" -if "$CHECKNONFREE"; then - if ! pkgbuild-check-nonfree; then - - if [[ $? -eq 15 ]]; then # other errors mean fail, not nonfree - error "PKGBUILD contains non-free issues" - exit 15 - else - warning "PKGBUILD couldn't be check aganist non-free issues" - fi - fi -fi - -if "$CLEANFIRST"; then - librechroot -c "$LIBRECHROOT_ARGS" "$CHROOT" -fi - -if "$UPDATEFIRST"; then - librechroot -u "$LIBRECHROOT_ARGS" "$CHROOT" -fi - -unset CLEANFIRST UPDATEFIRST LIBRECHROOT_ARGS - -makechrootpkg -d -r "$CHROOTDIR" -l "$CHROOT" -- $MAKEPKG_ARGS -ev="$?" # exit value - -copy_log - -exit $ev +main "$@" -- cgit v1.2.3-2-g168b From 749e8295844160ba96f0a67cab1a0799a5a81a24 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 12 Nov 2012 18:54:52 -0500 Subject: libremakepkg: touch up brackets --- src/chroot-tools/libremakepkg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/chroot-tools/libremakepkg') diff --git a/src/chroot-tools/libremakepkg b/src/chroot-tools/libremakepkg index 69e8998..a146627 100755 --- a/src/chroot-tools/libremakepkg +++ b/src/chroot-tools/libremakepkg @@ -130,7 +130,7 @@ main() { unset CLEANFIRST UPDATEFIRST librechroot_args - makechrootpkg "${makechrootpkg_args[@]}" -d -r "$CHROOTDIR/${CHROOT}" -l "$CHROOTCOPY" + makechrootpkg "${makechrootpkg_args[@]}" -d -r "$CHROOTDIR/$CHROOT" -l "$CHROOTCOPY" ev=$? # exit value copy_log exit $ev -- cgit v1.2.3-2-g168b From a7d0da3e7fd7009c28e09f73c32f0a355819f2e6 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 13 Nov 2012 00:07:15 -0500 Subject: libremakepkg: fix copy_log --- src/chroot-tools/libremakepkg | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/chroot-tools/libremakepkg') diff --git a/src/chroot-tools/libremakepkg b/src/chroot-tools/libremakepkg index a146627..3fa2f3d 100755 --- a/src/chroot-tools/libremakepkg +++ b/src/chroot-tools/libremakepkg @@ -29,7 +29,7 @@ # copy logs if they exist ## copy_log() { - find "${chroot_path}/build/" -maxdepth 1 -name "*\.log" -exec cp {} ./ \; + find "${copydir}/build/" -maxdepth 1 -name "*\.log" -exec cp {} ./ \; } ## @@ -89,6 +89,10 @@ main() { # Pass all arguments after -- right to makechrootpkg makechrootpkg_args+=("$@") + # not local + rootdir="${CHROOTDIR}/${CHROOT}/root" + copydir="${CHROOTDIR}/${CHROOT}/${CHROOTCOPY}" + if (( EUID )); then error "This script must be run as root" exit 1 -- cgit v1.2.3-2-g168b From 444cc22bc5cda7a4adc26982d3edbcfd1af426ed Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 13 Nov 2012 00:44:38 -0500 Subject: add an '-f' flag to pkgbuild-check-nonfree to let libremakepkg run as root --- src/chroot-tools/libremakepkg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/chroot-tools/libremakepkg') diff --git a/src/chroot-tools/libremakepkg b/src/chroot-tools/libremakepkg index 3fa2f3d..4593121 100755 --- a/src/chroot-tools/libremakepkg +++ b/src/chroot-tools/libremakepkg @@ -113,7 +113,7 @@ main() { if $CHECKNONFREE; then msg "Checking PKGBUILD for non-free issues" - if ! pkgbuild-check-nonfree; then + if ! pkgbuild-check-nonfree -f; then if [[ $? -eq 15 ]]; then # other errors mean fail, not nonfree error "PKGBUILD contains non-free issues" -- cgit v1.2.3-2-g168b From fd1e5a426713715d9c0e3fabbfe0d8a20b629bad Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 28 Nov 2012 15:18:44 -0500 Subject: chroot-tools: disable overriding CHROOTDIR at the command line --- src/chroot-tools/libremakepkg | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/chroot-tools/libremakepkg') diff --git a/src/chroot-tools/libremakepkg b/src/chroot-tools/libremakepkg index 4593121..faa50be 100755 --- a/src/chroot-tools/libremakepkg +++ b/src/chroot-tools/libremakepkg @@ -53,7 +53,6 @@ usage() { echo ' -u Update the chroot before building' echo ' -N Do not check freedom issues (for fullpkg)' echo '' - echo " -d Use this dir instead of \`$CHROOTDIR'" echo " -n Use this chroot instead of \`$CHROOT'" echo ' -l Use this chroot copy instead of basing it' echo ' on the username' @@ -77,7 +76,6 @@ main() { u) UPDATEFIRST=true;; N) CHECKNONFREE=false;; - d) CHROOTDIR=$OPTARG;; n) CHROOT=$OPTARG;; l) CHROOTCOPY=$OPTARG;; -- cgit v1.2.3-2-g168b From 259c05c47fc43875415d5ecab9666a46fb4b6d76 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 28 Nov 2012 19:34:19 -0500 Subject: Rewrite libremakepkg to not use makechrootpkg --- src/chroot-tools/libremakepkg | 175 +++++++++++++++++++++++++++--------------- 1 file changed, 112 insertions(+), 63 deletions(-) (limited to 'src/chroot-tools/libremakepkg') diff --git a/src/chroot-tools/libremakepkg b/src/chroot-tools/libremakepkg index faa50be..d661714 100755 --- a/src/chroot-tools/libremakepkg +++ b/src/chroot-tools/libremakepkg @@ -1,141 +1,190 @@ -#!/bin/bash +#!/bin/bash -euE # libremakepkg -# analogous to devtools' archbuild # Copyright 2010 - 2011 Nicolás Reynolds # Copyright 2011 Joshua Ismael Haase Hernández # Copyright 2012 Luke Shumaker - -# ---------- GNU General Public License 3 ---------- - +# # This file is part of Parabola. - +# # Parabola is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. - +# # Parabola is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. - +# # You should have received a copy of the GNU General Public License # along with Parabola. If not, see . . /etc/libretools.conf +shopt -s nullglob + +# This file (libremakepkg) is GPLv3+, but I would like to use some code +# modified from devtools' "makechrootpkg", which is GPLv2. +. "$(dirname "$0")/libremakepkg.gpl2" +# This gives us the functions: +# - chroot_init +# - chroot_extract +# - chroot_build +# - copy_pkgs + +# Boring functions ############################################################# + ## # copy logs if they exist ## -copy_log() { - find "${copydir}/build/" -maxdepth 1 -name "*\.log" -exec cp {} ./ \; +copy_logs() { + for l in "$copydir"/build/*.log; do + chown "$LIBREUSER" "$l" + mv "$l" . + done } ## # End inmediately but print a useful message ## trap_exit() { - copy_log - error "$@" + copy_logs + error "$*" exit 1 } +## +# Usage: makepkg_conf_get SETTING [DEFAULT] +## +makepkg_conf_get() { + local setting=$1 + if [[ -f $LIBREHOME/.makepkg.conf ]]; then + eval $(grep "^$setting=" "$LIBREHOME/.makepkg.conf") + fi + if [[ -z ${!setting} ]]; then + eval $(grep "^$setting=" "/etc/makepkg.conf") + fi + if [[ -z ${!setting} && -n ${2} ]]; then + eval "$setting='$2'" + fi +} + +chroot_makepkg_conf_get() { + local setting=$1 + eval $(grep "^$setting=" "$copydir/etc/makepkg.conf") +} + +chroot_makepkg_conf_set() { + local key=$1 + local val=$2 + sed -i "/^$KEY=/d" "$copydir/etc/makepkg.conf" + echo "$key='$val'" >> "$copydir/etc/makepkg.conf" +} + +# Functions that check for issues with the build ############################### + +libre_check_pkgbuild() { + msg "Checking PKGBUILD for issues" + # TODO + if ! pkgbuild-check-nonfree -f; then + if [[ $? -eq 15 ]]; then + # other errors mean fail, not nonfree + error "PKGBUILD contains non-free issues" + exit 15 + else + warning "PKGBUILD couldn't be check aganist non-free issues" + fi + fi +} + +libre_check_src() { + msg "Checking src directory for issues" + # TODO +} + +libre_check_pkg() { + msg "Checking final package for issues" + # TODO +} + + +# The main program ############################################################# + usage() { echo 'cd to a dir containing a PKGBUILD and run:' - echo '$0 [options] [-- makechrootpkg args [-- makepkg args]]' + echo '$0 [options] [-- makepkg args]' echo 'This script will build your package in a chroot.' echo '' echo 'OPTIONS:' echo ' -h Show this message' echo '' - echo ' -c Clean the chroot before building' - echo ' -u Update the chroot before building' - echo ' -N Do not check freedom issues (for fullpkg)' - echo '' + echo " -R Repackage" echo " -n Use this chroot instead of \`$CHROOT'" echo ' -l Use this chroot copy instead of basing it' echo ' on the username' } main() { - # The logic for setting CHROOTCOPY is mirred from makechrootpkg - CHROOTCOPY=$USER - [[ -n $SUDO_USER ]] && CHROOTCOPY=$SUDO_USER - [[ -z $CHROOTCOPY || $CHROOTCOPY = root ]] && CHROOTCOPY=copy - - CLEANFIRST=false - UPDATEFIRST=false - CHECKNONFREE=true + # Parse command line ################################################### - makechrootpkg_args=() + CHROOTCOPY=$LIBREUSER + [[ $CHROOTCOPY != root ]] || CHROOTCOPY=copy + makepkg_args=(-s --noconfirm -L) + REPACKAGE=false - while getopts 'hcuNd:n:l:' arg ; do + while getopts 'hRn:l:' arg ; do case "${arg}" in - c) CLEANFIRST=true;; - u) UPDATEFIRST=true;; - N) CHECKNONFREE=false;; - n) CHROOT=$OPTARG;; l) CHROOTCOPY=$OPTARG;; - + R) REPACKAGE=true; makepkg_args+=(-R) ;; h) usage; exit 0;; *) usage; exit 1;; esac done shift $(($OPTIND - 1)) - # Pass all arguments after -- right to makechrootpkg - makechrootpkg_args+=("$@") + # Pass all arguments after -- right to makepkg + makepkg_args+=("$@") - # not local rootdir="${CHROOTDIR}/${CHROOT}/root" copydir="${CHROOTDIR}/${CHROOT}/${CHROOTCOPY}" + # Init ################################################################# + if (( EUID )); then error "This script must be run as root" exit 1 fi - if [[ ! -e PKGBUILD ]]; then - error "This isn't a build directory" + if [[ ! -f PKGBUILD ]]; then + error "This must be run in a directory containing a PKGBUILD" exit 1 fi - # OK, we're starting now ############################################### - # Trap signals from makepkg - set -E trap 'trap_exit "(libremakepkg): TERM signal caught. Exiting..."' TERM HUP QUIT trap 'trap_exit "(libremakepkg): Aborted by user! Exiting..."' INT trap 'trap_exit "(libremakepkg): An unknown error has occurred. Exiting..."' ERR - if $CHECKNONFREE; then - msg "Checking PKGBUILD for non-free issues" - if ! pkgbuild-check-nonfree -f; then - if [[ $? -eq 15 ]]; then - # other errors mean fail, not nonfree - error "PKGBUILD contains non-free issues" - exit 15 - else - warning "PKGBUILD couldn't be check aganist non-free issues" - fi - fi - fi + makepkg_conf_get SRCDEST . + makepkg_conf_get PKGDEST . - if $CLEANFIRST; then - librechroot -c -d "$CHROOTDIR" -l "$CHROOTCOPY" "$CHROOT" - fi + # OK, we're starting now ############################################### - if $UPDATEFIRST; then - librechroot -u -d "$CHROOTDIR" -l "$CHROOTCOPY" "$CHROOT" - fi + lock_open_write 9 "$copydir.lock" "Locking chroot '$copy'" - unset CLEANFIRST UPDATEFIRST librechroot_args + # Set target CARCH as it might be used within the PKGBUILD to select correct sources + chroot_makepkg_conf_get CARCH + export CARCH - makechrootpkg "${makechrootpkg_args[@]}" -d -r "$CHROOTDIR/$CHROOT" -l "$CHROOTCOPY" - ev=$? # exit value - copy_log - exit $ev + chroot_init + libre_check_pkgbuild + $REPACKAGE || chroot_extract + libre_check_src + chroot_build + libre_check_pkg + copy_pkgs + copy_logs } main "$@" -- cgit v1.2.3-2-g168b From 6dd807e109d491458b26d76602ad344b4c025475 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 28 Nov 2012 19:42:08 -0500 Subject: teach libremakepkg "-m" to use a different command than "makepkg" --- src/chroot-tools/libremakepkg | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'src/chroot-tools/libremakepkg') diff --git a/src/chroot-tools/libremakepkg b/src/chroot-tools/libremakepkg index d661714..b6c84c1 100755 --- a/src/chroot-tools/libremakepkg +++ b/src/chroot-tools/libremakepkg @@ -117,12 +117,14 @@ usage() { echo 'This script will build your package in a chroot.' echo '' echo 'OPTIONS:' - echo ' -h Show this message' + echo " -n Use this chroot instead of \`$CHROOT'" + echo ' -l Use this chroot copy instead of basing it' + echo ' on the username' echo '' + echo " -m Use the command MAKEPKG instead of 'makepkg'" echo " -R Repackage" - echo " -n Use this chroot instead of \`$CHROOT'" - echo ' -l Use this chroot copy instead of basing it' - echo ' on the username' + echo '' + echo ' -h Show this message' } main() { @@ -130,14 +132,17 @@ main() { CHROOTCOPY=$LIBREUSER [[ $CHROOTCOPY != root ]] || CHROOTCOPY=copy + makepkg_args=(-s --noconfirm -L) REPACKAGE=false + MAKEPKG=makepkg - while getopts 'hRn:l:' arg ; do + while getopts 'n:l:m:Rh' arg ; do case "${arg}" in n) CHROOT=$OPTARG;; l) CHROOTCOPY=$OPTARG;; - R) REPACKAGE=true; makepkg_args+=(-R) ;; + m) MAKEPKG=$OPTARG;; + R) REPACKAGE=true; makepkg_args+=(-R);; h) usage; exit 0;; *) usage; exit 1;; esac -- cgit v1.2.3-2-g168b From 01d928f223a23f28af04dc1cdfcfd62ed6cc3f61 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 28 Nov 2012 22:08:56 -0500 Subject: improve libremakepkg's help message --- src/chroot-tools/libremakepkg | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src/chroot-tools/libremakepkg') diff --git a/src/chroot-tools/libremakepkg b/src/chroot-tools/libremakepkg index b6c84c1..b9107d8 100755 --- a/src/chroot-tools/libremakepkg +++ b/src/chroot-tools/libremakepkg @@ -111,20 +111,20 @@ libre_check_pkg() { # The main program ############################################################# +cmd=${0##*/} usage() { - echo 'cd to a dir containing a PKGBUILD and run:' - echo '$0 [options] [-- makepkg args]' - echo 'This script will build your package in a chroot.' + echo "Usage: $cmd [options] [-- makepkg args]" + echo 'This program will build your package.' echo '' echo 'OPTIONS:' - echo " -n Use this chroot instead of \`$CHROOT'" - echo ' -l Use this chroot copy instead of basing it' - echo ' on the username' + echo " -n Use this chroot instead of \`$CHROOT'" + echo ' -l Use this chroot copy instead of basing it' + echo ' on the username' echo '' - echo " -m Use the command MAKEPKG instead of 'makepkg'" - echo " -R Repackage" + echo " -m Use the command MAKEPKG instead of 'makepkg'" + echo " -R Repackage" echo '' - echo ' -h Show this message' + echo ' -h Show this message' } main() { -- cgit v1.2.3-2-g168b From 06f10b87d16d4c83016ff3ef21217494f921d93b Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 28 Nov 2012 22:10:26 -0500 Subject: many fixes --- src/chroot-tools/libremakepkg | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/chroot-tools/libremakepkg') diff --git a/src/chroot-tools/libremakepkg b/src/chroot-tools/libremakepkg index b9107d8..f06bb17 100755 --- a/src/chroot-tools/libremakepkg +++ b/src/chroot-tools/libremakepkg @@ -62,10 +62,10 @@ makepkg_conf_get() { if [[ -f $LIBREHOME/.makepkg.conf ]]; then eval $(grep "^$setting=" "$LIBREHOME/.makepkg.conf") fi - if [[ -z ${!setting} ]]; then + if [[ -z ${!setting:-} ]]; then eval $(grep "^$setting=" "/etc/makepkg.conf") fi - if [[ -z ${!setting} && -n ${2} ]]; then + if [[ -z ${!setting:-} && -n ${2} ]]; then eval "$setting='$2'" fi } @@ -78,7 +78,7 @@ chroot_makepkg_conf_get() { chroot_makepkg_conf_set() { local key=$1 local val=$2 - sed -i "/^$KEY=/d" "$copydir/etc/makepkg.conf" + sed -i "/^$key=/d" "$copydir/etc/makepkg.conf" echo "$key='$val'" >> "$copydir/etc/makepkg.conf" } @@ -133,7 +133,7 @@ main() { CHROOTCOPY=$LIBREUSER [[ $CHROOTCOPY != root ]] || CHROOTCOPY=copy - makepkg_args=(-s --noconfirm -L) + makepkg_args='-s --noconfirm -L ' REPACKAGE=false MAKEPKG=makepkg @@ -142,14 +142,14 @@ main() { n) CHROOT=$OPTARG;; l) CHROOTCOPY=$OPTARG;; m) MAKEPKG=$OPTARG;; - R) REPACKAGE=true; makepkg_args+=(-R);; + R) REPACKAGE=true; makepkg_args+=' -R ';; h) usage; exit 0;; *) usage; exit 1;; esac done shift $(($OPTIND - 1)) # Pass all arguments after -- right to makepkg - makepkg_args+=("$@") + makepkg_args+=" $*" rootdir="${CHROOTDIR}/${CHROOT}/root" copydir="${CHROOTDIR}/${CHROOT}/${CHROOTCOPY}" @@ -176,7 +176,7 @@ main() { # OK, we're starting now ############################################### - lock_open_write 9 "$copydir.lock" "Locking chroot '$copy'" + lock_open_write 9 "$copydir" "Locking chroot '$CHROOTCOPY'" # Set target CARCH as it might be used within the PKGBUILD to select correct sources chroot_makepkg_conf_get CARCH -- cgit v1.2.3-2-g168b From b9dbed0ae6709351dd244c87581c2d558a9d129f Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 30 Nov 2012 16:12:37 -0500 Subject: libremakepkg: fix bug in makepkg_conf_get --- src/chroot-tools/libremakepkg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/chroot-tools/libremakepkg') diff --git a/src/chroot-tools/libremakepkg b/src/chroot-tools/libremakepkg index f06bb17..deb26b2 100755 --- a/src/chroot-tools/libremakepkg +++ b/src/chroot-tools/libremakepkg @@ -65,7 +65,7 @@ makepkg_conf_get() { if [[ -z ${!setting:-} ]]; then eval $(grep "^$setting=" "/etc/makepkg.conf") fi - if [[ -z ${!setting:-} && -n ${2} ]]; then + if [[ -z ${!setting:-} && -n ${2:-} ]]; then eval "$setting='$2'" fi } -- cgit v1.2.3-2-g168b From b81efba931aae92fa7cfafb0f2d070ba203a86f2 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 30 Nov 2012 16:14:26 -0500 Subject: libremakepkg: forget -R --- src/chroot-tools/libremakepkg | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src/chroot-tools/libremakepkg') diff --git a/src/chroot-tools/libremakepkg b/src/chroot-tools/libremakepkg index deb26b2..4b49931 100755 --- a/src/chroot-tools/libremakepkg +++ b/src/chroot-tools/libremakepkg @@ -122,7 +122,6 @@ usage() { echo ' on the username' echo '' echo " -m Use the command MAKEPKG instead of 'makepkg'" - echo " -R Repackage" echo '' echo ' -h Show this message' } @@ -134,7 +133,6 @@ main() { [[ $CHROOTCOPY != root ]] || CHROOTCOPY=copy makepkg_args='-s --noconfirm -L ' - REPACKAGE=false MAKEPKG=makepkg while getopts 'n:l:m:Rh' arg ; do @@ -142,7 +140,6 @@ main() { n) CHROOT=$OPTARG;; l) CHROOTCOPY=$OPTARG;; m) MAKEPKG=$OPTARG;; - R) REPACKAGE=true; makepkg_args+=' -R ';; h) usage; exit 0;; *) usage; exit 1;; esac @@ -183,11 +180,13 @@ main() { export CARCH chroot_init + libre_check_pkgbuild - $REPACKAGE || chroot_extract + chroot_extract libre_check_src chroot_build libre_check_pkg + copy_pkgs copy_logs } -- cgit v1.2.3-2-g168b From de74c8b50e734128f4641a20e3c4812713366f40 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 30 Nov 2012 16:14:49 -0500 Subject: libremakepkg: match makepkg's error message if PKGBUILD does not exist --- src/chroot-tools/libremakepkg | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/chroot-tools/libremakepkg') diff --git a/src/chroot-tools/libremakepkg b/src/chroot-tools/libremakepkg index 4b49931..4e810d1 100755 --- a/src/chroot-tools/libremakepkg +++ b/src/chroot-tools/libremakepkg @@ -159,7 +159,8 @@ main() { fi if [[ ! -f PKGBUILD ]]; then - error "This must be run in a directory containing a PKGBUILD" + # This is the message used by makepkg + error "PKGBUILD does not exist" exit 1 fi -- cgit v1.2.3-2-g168b