X-Git-Url: https://git.tld-linux.org/?a=blobdiff_plain;f=builder.sh;h=4ea1d3d8904a203ea2bb28b8e4ea0343583b2f81;hb=b35217ea1e1522e9feb6aabfce686f09bd0e3370;hp=a19da1207d111a72e70ecf92315418108f3452d0;hpb=45d8f2d9258214696ed2d3bba02ceb0236d47fd3;p=packages%2Frpm-build-tools.git diff --git a/builder.sh b/builder.sh index a19da12..4ea1d3d 100755 --- a/builder.sh +++ b/builder.sh @@ -1750,6 +1750,12 @@ build_package() { local specdir=$(insert_gitlog $SPECFILE) ulimit -c unlimited + # If required exclude directories with systemd related files from package contents + 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" # 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=$? @@ -1847,6 +1853,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"