X-Git-Url: https://git.tld-linux.org/?a=blobdiff_plain;ds=sidebyside;f=builder.sh;h=1d876e589f1b12ec841a419cd0a14ea53a1f563c;hb=dbb862e4ac5a88826c43d8f48e265e5f3238174d;hp=14f317ac24cc09de0b90933ba2b54191f2911238;hpb=4a622468cc1a2fe34b00641538f04d4d2bdf0b8b;p=packages%2Frpm-build-tools.git diff --git a/builder.sh b/builder.sh index 14f317a..1d876e5 100755 --- a/builder.sh +++ b/builder.sh @@ -1754,6 +1754,10 @@ build_package() { if grep -q -E 'systemd(unitdir|userunitdir|tmpfilesdir)' $specdir/$SPECFILE; then sed -i -e '/^%exclude_systemd_files/d; /^%files/s/$/\n%exclude_systemd_files/g;' $specdir/$SPECFILE fi + # Enable/disable distro wide bconds based on ~/.distbcond + process_distbcond "$specdir/$SPECFILE" + # Add %tld macro to release to allow release control + sed -i -r -e 's/^Release:\s+(.*)$/Release:\t\1%{?tld}/' $specdir/$SPECFILE # FIXME: eval here is exactly why? PATH=$CLEAN_PATH eval teeboth "'$logfile'" ${TIME_COMMAND} ${NICE_COMMAND} $RPMBUILD $TARGET_SWITCH $BUILD_SWITCH -v $QUIET $CLEAN $RPMOPTS $RPMBUILDOPTS $BCOND --define \'_specdir $PACKAGE_DIR\' --define \'_sourcedir $PACKAGE_DIR\' $specdir/$SPECFILE retval=$? @@ -1851,6 +1855,51 @@ process_bcondrc() { update_shell_title "parse ~/.bcondrc: DONE!" } +process_distbcond() { + # apply bconds from ~/.distbcond to spec + # The file structure is like gentoo's package.use: + # --- + # * -selinux + # samba -mysql -pgsql + # w32codec-installer license_agreement + # php +mysqli + # --- + if [ -f $HOME/.distbcond ] || ([ -n $HOME_ETC ] && [ -f $HOME_ETC/.distbcond ]); then + : + else + return + fi + + SN=${SPECFILE%%\.spec} + + local distbcond=$HOME/.distbcond + [ -n $HOME_ETC ] && [ -f $HOME_ETC/.distbcond ] && distbcond=$HOME_ETC/.distbcond + + local bcond_avail=$(find_spec_bcond $SPECFILE) + + while read pkg flags; do + # ignore comments + [[ "$pkg" == \#* ]] && continue + + # any package or current package? + if [ "$pkg" = "*" ] || [ "$pkg" = "$PACKAGE_NAME" ] || [ "$pkg" = "$SN" ]; then + for flag in $flags; do + local opt=${flag#[+-]} + + # use only flags which are in this package. + if [[ $bcond_avail = *${opt}* ]]; then + if [[ $flag = -* ]]; then + sed -i -r -e '/^%bcond_(with|without)\s+'$opt'/s/^%bcond_(with|without)/%bcond_with/g;' $specdir/$SPECFILE + elif [[ $flag = +* ]]; then + sed -i -r -e '/^%bcond_(with|without)\s+'$opt'/s/^%bcond_(with|without)/%bcond_without/g;' $specdir/$SPECFILE + fi + fi + done + fi + done < $distbcond + update_shell_title "parse ~/.distbcond: DONE!" +} + set_bconds_values() { update_shell_title "set bcond values"