diff options
Diffstat (limited to 'src/fullpkg/fullpkg-build')
-rwxr-xr-x | src/fullpkg/fullpkg-build | 180 |
1 files changed, 87 insertions, 93 deletions
diff --git a/src/fullpkg/fullpkg-build b/src/fullpkg/fullpkg-build index 1771d83..e824c2e 100755 --- a/src/fullpkg/fullpkg-build +++ b/src/fullpkg/fullpkg-build @@ -18,101 +18,98 @@ check_vars libretools FULLBUILDCMD || exit 1 # ## status: nonfree, built, failed, unstaged list_pkgs() { - msg="$2" - local pkgs=($(grep "$1:" $build_dir/log)) && { - msg "$2" - echo ${pkgs[@]} | tr " " "\n" | cut -d: -f2 - } + msg="$2" + local pkgs=($(grep "$1:" $build_dir/log)) && { + msg "$2" + printf '%s\n' "${pkgs[@]}" | cut -d: -f2 + } } ## Check all build_dir, fails if one PKGBUILD is nonfree check_nonfree() { - find "$build_dir" -name PKGBUILD \ - -exec pkgbuild-check-nonfree {} + - if [ "$?" -eq 15 ]; then - error "Some PKGBUILD have nonfree problems" - exit 15 - fi - + find "$build_dir" -name PKGBUILD \ + -exec pkgbuild-check-nonfree {} + + local s=$? + pkgbuild-summarize-nonfree -q $s || return $s } # Removes a package from the buildorder # $1 package name # $2 buildorder file remove_buildorder() { - grep -Evw "${1}" ${2} > ${2}2 - mv -f ${2}2 ${2} + grep -Evw "${1}" ${2} > ${2}2 + mv -f ${2}2 ${2} - return $? + return $? } succesfull_build() { - if [ "$RUN" != "$FULLBUILDCMD" ]; then - return 0 # Custom command or download sources - fi + if [[ "$RUN" != "$FULLBUILDCMD" ]]; then + return 0 # Custom command or download sources + fi - if source .INFO && [ -n "$repo" ]; then + if source .INFO && [[ -n "$repo" ]]; then - if [ ! -z "$HOOKLOCALRELEASE" ]; then - "$HOOKLOCALRELEASE" "$repo" - fi + if [[ ! -z "$HOOKLOCALRELEASE" ]]; then + "$HOOKLOCALRELEASE" "$repo" + fi - msg "Updating pacman db and packages" - sudo pacman -Sy || true + msg "Updating pacman db and packages" + sudo pacman -Sy || true - fi + fi - echo "built:$(basename $PWD)" >>$build_dir/log + echo "built:$(basename $PWD)" >>$build_dir/log } build_description() { - list_pkgs "nonfree" "Those packages contain nonfree deps:" - list_pkgs "built" "Those packages were built and staged:" - list_pkgs "failed" "Those packages failed to build:" - list_pkgs "unstaged" "Those packages couldn't be staged (missing reponame):" + list_pkgs "nonfree" "Those packages contain nonfree deps:" + list_pkgs "built" "Those packages were built and staged:" + list_pkgs "failed" "Those packages failed to build:" + list_pkgs "unstaged" "Those packages couldn't be staged (missing reponame):" } __build() { - pushd ${build_dir} >/dev/null + pushd ${build_dir} >/dev/null - build_packages=($(sort -gr $buildorder | cut -d: -f2)) # greater levels must be built first + build_packages=($(sort -gr $buildorder | cut -d: -f2)) # greater levels must be built first - while [ ${#build_packages[@]} -ge 1 ]; do + while [[ ${#build_packages[@]} -ge 1 ]]; do - pushd "$build_dir/${build_packages[0]}" >/dev/null + pushd "$build_dir/${build_packages[0]}" >/dev/null - if [ -n "${HOOKPKGBUILDMOD}" ]; then - ${HOOKPKGBUILDMOD} || true - fi + if [[ -n "${HOOKPKGBUILDMOD}" ]]; then + ${HOOKPKGBUILDMOD} || true + fi - eval "$RUN"; r=$? + eval "$RUN"; r=$? - case $r in + case $r in - 0) succesfull_build ;; + 0) succesfull_build ;; - *) error "There were errors while trying to build the package." - echo "failed:$(basename $PWD)" >>$build_dir/log - ;; - esac + *) error "There were errors while trying to build the package." + echo "failed:$(basename $PWD)" >>$build_dir/log + ;; + esac - remove_buildorder "${build_packages[0]}" $buildorder || true + remove_buildorder "${build_packages[0]}" $buildorder || true -# which is next package? - build_packages=($(sort -gr $buildorder | cut -d: -f2)) - popd > /dev/null - done + # which is next package? + build_packages=($(sort -gr $buildorder | cut -d: -f2)) + popd > /dev/null + done - popd >/dev/null + popd >/dev/null } # End inmediately but print a useful message trap_exit() { - error "$@" - warning "Leftover files left on $build_dir" - mv .BUILDORDER BUILDORDER - exit 1 + error "$@" + warning "Leftover files left on $build_dir" + mv .BUILDORDER BUILDORDER + exit 1 } # Trap signals from makepkg @@ -124,66 +121,63 @@ trap 'trap_exit "(fullpkg-build) An unknown error has occurred. Exiting..."' ERR CLEANUP="false" CHECKNONFREE="true" RUN="$FULLBUILDCMD" -MESSAGE="Building packages" +MESSAGE="$(_ 'Building packages')" usage() { - - echo "" - echo "$(basename $0) [options] <build_dir>" - echo "" - echo "Builds packages from build_dir, create a build_dir using:" - echo "'fullpkg-find <build_dir>'" - echo "" - echo "If no <build_dir> is specified, it uses the current directory." - echo "" - echo "OPTIONS:" - echo " -h : this message." - echo " -c : clean <build_dir> on succesfull build" - echo " -N : don't check for freedom issues." #Also made by fullpkg-find - echo " -r \"command\" : use this instead of \"$FULLBUILDCMD\"." - echo " -g : get sources for building packages on build_dir." - echo "" - exit 1 - + print "Usage: %s [OPTIONS] [BUILD_DIR]" "${0##*/}" + print "Builds packages in BUILD_DIR, as set up by fullpkg-find" + echo + prose "Builds packages from BUILD_DIR; create BUILD_DIR using:" + print ' $ fullpkg-find BUILD_DIR' + echo + prose "If no BUILD_DIR is specified, it uses the current directory." + echo + print "Options:" + flag "-c" "Clean BUILD_DIR on succesfull build" + flag "-N" "Don't check for freedom issues." #Also made by fullpkg-find + flag "-r $(_ CMD)" "Use CMD instead of \${FULLBUILDCMD}" + flag "-g" "Get sources for building packages on BUILD_DIR" + flag "-h" "Show this message" } while getopts 'hNr:g' arg; do - case $arg in - h) usage ;; - c) CLEAN ;; - N) CHECKNONFREE="false" ;; - r) RUN="$OPTARG" - MESSAGE="Executing custom action";; - g) RUN='makepkg -g > /dev/null' - MESSAGE="Downloading packages";; - esac + case $arg in + h) usage; exit 0 ;; + c) CLEAN ;; + N) CHECKNONFREE="false" ;; + r) RUN="$OPTARG" + MESSAGE="$(_ 'Executing custom action')";; + g) RUN='makepkg -g > /dev/null' + MESSAGE="$(_ 'Downloading packages')";; + esac done shift $(( OPTIND - 1 )) build_dir="${1:-`pwd`}" buildorder="${build_dir}/BUILDORDER" -if [ ! -e "$buildorder" ]; then - error "This is not a build_dir. Make one using fullpkg." - usage +if [[ ! -e "$buildorder" ]]; then + error "This is not a build_dir. Make one using fullpkg." + usage + exit 1 else -# backup BUILDORDER - cp "$buildorder" "$build_dir/.BUILDORDER" + # backup BUILDORDER + cp "$buildorder" "$build_dir/.BUILDORDER" fi if "$CHECKNONFREE"; then - check_nonfree + check_nonfree fi msg "$MESSAGE" __build -if [ "$RUN" != "$FULLBUILDCMD" ]; then - # Used for downloading or custom command - mv "$build_dir/.BUILDORDER" "$buildorder" - exit 0 +if [[ "$RUN" != "$FULLBUILDCMD" ]]; then + # Used for downloading or custom command + mv "$build_dir/.BUILDORDER" "$buildorder" + exit 0 elif "$CLEANUP"; then - find "$build_dir" -mindepth 1 -delete + find "$build_dir" -mindepth 1 -delete fi build_description |