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
- # Disable systemd bcond if present and enabled, there is no systemd in TLD
- if grep -q -E '^%bcond_without\s+systemd\s+' $specdir/$SPECFILE; then
- sed -i -r -e '/^%bcond_without\s+systemd\s+/s/bcond_without/bcond_with/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=$?
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"