#!/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/" -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 -r "$CHROOTDIR" -l "$CHROOT" "$MAKEPKG_ARGS" ev="$?" # exit value copy_log exit $ev