diff --git a/bin/aur.sh b/bin/aur.sh index af71de6..65d9bd0 100755 --- a/bin/aur.sh +++ b/bin/aur.sh @@ -43,6 +43,11 @@ function is-more { return $? } +function check_bool { + [[ -n "$1" ]] && $1 + return $? +} + # ------------------------------------------------------------------------------ # Parse commandline: anything prefixed with - is a makepkg option, others are package names @@ -61,7 +66,7 @@ NEED_ROOT=false LIST_ONLY=false IGNORE_ERRORS=false EXCLUDE= -ASDEPS=true +ASDEPS=false NEEDED=true NOCONFIRM=true USECUSTOM=true @@ -176,9 +181,9 @@ process_arg() { echo "Makepkg/Pacman options:" echo " -i Install package after building it (requires superuser)" echo " -s Install dependencies from official repos (requires superuser)" + echo " -r Remove installed dependencies after build" echo " --pkg Only build selected packages (when working with split packages)" - echo " --no-asdeps, --asexplicit" - echo " Don't pass --asdeps to pacman" + echo " --asdeps Pass --asdeps to pacman for all installed packages" echo " --no-needed, --reinstall" echo " Don't pass --needed to pacman" echo " --no-noconfirm" @@ -247,7 +252,6 @@ for cx in "$@"; do done # Inverted Makepkg args -$ASDEPS && add_makepkg_arg "--asdeps" $NEEDED && add_makepkg_arg "--needed" $NOCONFIRM && add_makepkg_arg "--noconfirm" @@ -336,7 +340,11 @@ collect_package() { if (( $AFFECTED_PKGS[(I)$p] )); then return 0 fi + + # Set Defaults + PKG_INFO[$p:AsDeps]=$ASDEPS + # Get package information if $USECUSTOM && [ -e "$CUSTOMDIR/$p" ]; then msg "[AUR] Found '$p' in '$CUSTOMDIR', Using that" cd "$CUSTOMDIR" @@ -360,6 +368,7 @@ collect_package() { fi fi + # Check for split package if [ -n "$PKG_INFO[$p:PackageBase]" ]; then color 35 echo "[AUR] $p: Is a split package. Selecting base package '$PKG_INFO[$p:PackageBase]' instead." warn "[AUR] Operations on specific sub-packages require the base package to be specified along with --pkg." @@ -367,6 +376,7 @@ collect_package() { return $? fi + # Check for dependencies if [ -n "$PKG_INFO[$p:Depends]" ]; then # process dependencies PKG_INFO[$p:Dependencies]="" @@ -406,10 +416,13 @@ collect_package() { if $RECURSE_DEPS && ! pacman -Qi "$dep" >/dev/null 2>&1 && cower -i "$dep" >/dev/null 2>&1; then # Check if it's an (un-installed) aur package color 35 echo "[AUR] $p: Collecting AUR dependency '$dep'..." collect_package "$dep" + # Mark as dependency + PKG_INFO[$dep:AsDeps]=true fi done fi + # Queue package for build if ! (( $AFFECTED_PKGS[(I)$p] )); then # Don't add split packages depending on themselves multiple times. FIXME: Properly handle cycles AFFECTED_PKGS=("${AFFECTED_PKGS[@]}" "$p") fi @@ -442,10 +455,17 @@ build_package() { # Copy it to the build directory $build and change there cp -Lr "$PKG_INFO[$p:From]" "$build/$p" cd "$build/$p" + + # Build makepkg args + local add_args=() + + if check_bool $PKG_INFO[$p:AsDeps]; then + add_args+=("--asdeps") + fi # Run makepkg msg "[AUR] $p: Building..." - makepkg "${makepkg_args[@]}" || \ + makepkg "${makepkg_args[@]}" "${add_args[@]}" || \ { pkg_failed "$p" 1 "[AUR] $p: Makepkg failed!"; return $? } msg "[AUR] $p: Done!"