Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=1dc7b61221be75cfd824ccdcd25cfa5d2999587d
commit 1dc7b61221be75cfd824ccdcd25cfa5d2999587d Author: Michel Hermier <[email protected]> Date: Sat Nov 24 06:39:10 2012 +0100 scripts/makepkg * Move build script loading and validation to a single function. diff --git a/scripts/makepkg b/scripts/makepkg index 6c6435c..7635777 100755 --- a/scripts/makepkg +++ b/scripts/makepkg @@ -567,7 +567,33 @@ fakeroot_enter() { fi } -buildscript_validate() { +buildscript_load() { + if [ ! -f "$BUILDSCRIPT" ]; then + error "$BUILDSCRIPT does not exist." + exit 1 + fi + + local i + + # You have to declare associative array before using them :/ + declare -A \ + _P_package_descriptions \ + _P_package_licenses \ + _P_package_replaces \ + _P_package_groups \ + _P_package_depends \ + _P_package_rodepends \ + _P_package_removes \ + _P_package_conflicts \ + _P_package_provides \ + _P_package_backups \ + _P_package_installs \ + _P_package_options \ + _P_package_archs \ + _P_package_archives + + source ./$BUILDSCRIPT + if [ "`type -p fblint`" ]; then if ! fblint -p "$BUILDSCRIPT" &>/dev/null; then warning "fblint says some needed variables are missing or incomplete." @@ -645,6 +671,75 @@ buildscript_validate() { exit 1 fi fi + + # Compatibility adaptation + if [ "${#_P_package_names[@]}" -eq 0 ]; then + _P_options="${options[*]}" + + _P_package_names=("${pkgname}" "${subpkgs[@]}") + _P_package_descriptions["${pkgname}"]="${pkgdesc}" + for i in "${pkgdesc_localized[@]}"; do + _P_package_descriptions["${pkgname}"]+="$($ECHO -en "\n$i")" + done + _P_package_licenses["${pkgname}"]="${license[*]}" + _P_package_replaces["${pkgname}"]="${replaces[*]}" + _P_package_groups["${pkgname}"]="${groups[*]}" + _P_package_depends["${pkgname}"]="${depends[*]}" + _P_package_rodepends["${pkgname}"]="${rodepends[*]}" + _P_package_removes["${pkgname}"]="${removes[*]}" + _P_package_conflicts["${pkgname}"]="${conflicts[*]}" + _P_package_provides["${pkgname}"]="${provides[*]}" + _P_package_backups["${pkgname}"]="${backup[*]}" + _P_package_installs["${pkgname}"]="${install}" + _P_package_options["${pkgname}"]="${options[*]}" + _P_package_archs["${pkgname}"]="${archs[*]}" + + i=0 + for subpkg in "${subpkgs[@]}"; do + _P_package_descriptions["${subpkg}"]="$($ECHO -en "${subdescs[$i]}\n${subdescs_localized[$i]}")" + _P_package_licenses["${subpkg}"]="${sublicense[$i]}" + _P_package_replaces["${subpkg}"]="${subreplaces[$i]}" + _P_package_groups["${subpkg}"]="${subgroups[$i]}" + _P_package_depends["${subpkg}"]="${subdepends[$i]}" + _P_package_rodepends["${subpkg}"]="${subrodepends[$i]}" + _P_package_removes["${subpkg}"]="${subremoves[$i]}" + _P_package_conflicts["${subpkg}"]="${subconflicts[$i]}" + _P_package_provides["${subpkg}"]="${subprovides[$i]}" + _P_package_backups["${subpkg}"]="${subbackup[$i]}" + _P_package_installs["${subpkg}"]="${subinstall[$i]}" + _P_package_options["${subpkg}"]="${suboptions[$i]}" + _P_package_archs["${subpkg}"]="${subarchs[$i]}" + i=$(($i+1)) + done + fi + + # Check _P_package_names on your arch + i=0 + while [ $i -lt ${#_P_package_names[@]} ]; do + if in_array $CARCH ${_P_package_archs["${_P_package_names["$i"]}"]}; then + _P_package_archives["${_P_package_names["$i"]}"]="${pkgname}-${pkgver}-${pkgrel}-${CARCH}.${PKG_EXT}" + i=$(($i+1)) + else + warning "Package ${_P_package_names["$i"]} is not available on your ARCH, dropping it!" + unset _P_package_names["$i"] + fi + done + + local pkgname + for pkgname in "${_P_package_names[@]}"; do + if [ -n "$_P_package_installs["$pkgname"]" ]; then + # FIXME we should allways be in startdir here + if [ ! -e "$install" -a ! -e "$startdir/$install" ] && ! check_option GENSCRIPTLET; then + error "Missing install scriptlet. If this is intentional, add 'genscriptlet' to options()." + exit 1 + fi + else + if [ -e "${pkgname}.install" ]; then + warning "Automagically found install script for $pkgname" + _P_package_installs["$pkgname"]="${pkgname}.install" + fi + fi + done } buildscript_up2date() { @@ -1521,6 +1616,7 @@ makepkg_parseargs() { NOEXTRACT="${NOEXTRACT:-0}" NOSTRIP="${NOSTRIP:-0}" NOUP2DATE="${NOUP2DATE:-0}" + NOVALIDATE="${NOVALIDATE:-0}" PACMAN="${PACMAN:-pacman-g2.static}" PACMAN_OPTS="${PACMAN_OPTS:-}" RMDEPS="${RMDEPS:-0}" @@ -1565,8 +1661,6 @@ makepkg_parseargs() { exit 1 fi fi - - fi } makepkg_prepare_sources() { @@ -1586,7 +1680,7 @@ makepkg_prepare_sources() { # chown all source files to root.root chown -R root.root $startdir/src fi -fi +} makepkg_build() { if [ "$NOBUILD" -eq 1 ]; then @@ -1867,14 +1961,7 @@ if [ ! -z "$DOWNLOAD" -a "$INFAKEROOT" != "1" ]; then done fi -if [ ! -f "$BUILDSCRIPT" ]; then - error "$BUILDSCRIPT does not exist." - exit 1 -fi - -source ./$BUILDSCRIPT - -buildscript_validate +buildscript_load eval "serverlist=${TREE}_servers" if [ "$F_makepkg_scm" = "git" -a ! "`check_option NOVERSRC`" ]; then @@ -1891,81 +1978,6 @@ if [ -z "$CACHEURL" ]; then CACHEURL="${serverlist}/source/$groups/$pkgname" fi -# You have to declare associative array before using them :/ -declare -A \ - _P_package_descriptions \ - _P_package_licenses \ - _P_package_replaces \ - _P_package_groups \ - _P_package_depends \ - _P_package_rodepends \ - _P_package_removes \ - _P_package_conflicts \ - _P_package_provides \ - _P_package_backups \ - _P_package_installs \ - _P_package_options \ - _P_package_archs \ - _P_package_archives - -# Compatibility adaptation -if [ "${#_P_package_names[@]}" -eq 0 ]; then - _P_options="${options[*]}" - - _P_package_names=("${pkgname}" "${subpkgs[@]}") - _P_package_descriptions["${pkgname}"]="${pkgdesc}" - for i in "${pkgdesc_localized[@]}"; do - _P_package_descriptions["${pkgname}"]+="$($ECHO -en "\n$i")" - done - _P_package_licenses["${pkgname}"]="${license[*]}" - _P_package_replaces["${pkgname}"]="${replaces[*]}" - _P_package_groups["${pkgname}"]="${groups[*]}" - _P_package_depends["${pkgname}"]="${depends[*]}" - _P_package_rodepends["${pkgname}"]="${rodepends[*]}" - _P_package_removes["${pkgname}"]="${removes[*]}" - _P_package_conflicts["${pkgname}"]="${conflicts[*]}" - _P_package_provides["${pkgname}"]="${provides[*]}" - _P_package_backups["${pkgname}"]="${backup[*]}" - _P_package_installs["${pkgname}"]="${install}" - _P_package_options["${pkgname}"]="${options[*]}" - _P_package_archs["${pkgname}"]="${archs[*]}" - - i=0 - for subpkg in "${subpkgs[@]}"; do - _P_package_descriptions["${subpkg}"]="$($ECHO -en "${subdescs[$i]}\n${subdescs_localized[$i]}")" - _P_package_licenses["${subpkg}"]="${sublicense[$i]}" - _P_package_replaces["${subpkg}"]="${subreplaces[$i]}" - _P_package_groups["${subpkg}"]="${subgroups[$i]}" - _P_package_depends["${subpkg}"]="${subdepends[$i]}" - _P_package_rodepends["${subpkg}"]="${subrodepends[$i]}" - _P_package_removes["${subpkg}"]="${subremoves[$i]}" - _P_package_conflicts["${subpkg}"]="${subconflicts[$i]}" - _P_package_provides["${subpkg}"]="${subprovides[$i]}" - _P_package_backups["${subpkg}"]="${subbackup[$i]}" - _P_package_installs["${subpkg}"]="${subinstall[$i]}" - _P_package_options["${subpkg}"]="${suboptions[$i]}" - _P_package_archs["${subpkg}"]="${subarchs[$i]}" - i=$(($i+1)) - done -fi - -# Check _P_package_names on your arch -i=0 -while [ $i -lt ${#_P_package_names[@]} ]; do - if in_array $CARCH ${_P_package_archs["${_P_package_names["$i"]}"]}; then - _P_package_archives["${_P_package_names["$i"]}"]="${pkgname}-${pkgver}-${pkgrel}-${CARCH}.${PKG_EXT}" - i=$(($i+1)) - else - warning "Package ${_P_package_names["$i"]} is not available on your ARCH, dropping it!" - unset _P_package_names["$i"] - fi -done - -if [ ! -e "$install" -a ! -e "$startdir/$install" -a ! "`check_option GENSCRIPTLET`" ]; then - error "Missing install scriptlet. If this is intentional, add 'genscriptlet' to options()." - exit 1 -fi - if [ -f "$PKGDEST/${_P_package_archives["${pkgname}"]}" -a "$FORCE" = "0" -a "$GENSHA1" = "0" ]; then if [ "$INSTALL" = "1" ]; then warning "a package has already been built, installing existing package." _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
