From 7cc980c36f91b314a6ecbe5ce782f9df51e4ab97 Mon Sep 17 00:00:00 2001 From: Chris Rees Date: Sat, 9 Jun 2012 09:01:38 +0000 Subject: Support conversion of make.conf-style files. The script is very cautious, and may miss some; checking the results by hand is absolutely vital. --- Tools/scripts/options2ng.sh | 112 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 91 insertions(+), 21 deletions(-) (limited to 'Tools/scripts/options2ng.sh') diff --git a/Tools/scripts/options2ng.sh b/Tools/scripts/options2ng.sh index f3c7809f7c2c..e4886b2b01b1 100755 --- a/Tools/scripts/options2ng.sh +++ b/Tools/scripts/options2ng.sh @@ -5,26 +5,96 @@ # This script makes a backup of the ports OPTIONS database and then converts # all of the saved files to the new format. -PORT_DBDIR=$(make -C /usr/ports/shells/bash -V PORT_DBDIR) - -tar cfz $(mktemp /tmp/optionsbackup.tar.gz.XXX) $PORT_DBDIR - -for optionsfile in $PORT_DBDIR/*/options -do if grep -q ^WITH $optionsfile ; then - options_read= - echo "Converting $optionsfile" - tmpfile=$(mktemp /tmp/optionsconvert.XXXXXXX) || exit 1 - grep '^[#_]' $optionsfile > $tmpfile - for option in $(sed -ne 's/^WITH_\([^=]*\)=true/\1/p' < $optionsfile) - do echo "OPTIONS_FILE_SET+=$option" >> $tmpfile - options_read="${options_read} $option" +usage() +{ + < $tmpfile + for option in $(sed -ne 's/^WITH_\([^=]*\)=true/\1/p' < $optionsfile) + do echo "OPTIONS_FILE_SET+=$option" >> $tmpfile + options_read="${options_read} $option" + done + for option in $(sed -ne 's/^WITHOUT_\([^=]*\)=true/\1/p' < $optionsfile) + do echo "OPTIONS_FILE_UNSET+=$option" >> $tmpfile + options_read="${options_read} $option" + done + echo "_FILE_COMPLETE_OPTIONS_LIST=$options_read" >> $tmpfile + mv $tmpfile $optionsfile + chmod 644 $optionsfile + fi done - for option in $(sed -ne 's/^WITHOUT_\([^=]*\)=true/\1/p' < $optionsfile) - do echo "OPTIONS_FILE_UNSET+=$option" >> $tmpfile - options_read="${options_read} $option" + ;; +-f) + filename=$2 + if [ ! -f $filename ] + then echo $filename does not exist! + exit 2 + fi + + tmpfile=$(mktemp /tmp/makeconfconvert.XXXXXXX) || exit 1 + + IFS=' +' + for line in $(cat $filename) + do if $(echo $line | grep -Eq '(PKGNG|DEBUG)') + then echo $line >> $tmpfile + else echo $line | sed -E \ + -e 's,^WITH_([^=]*)=[ ]*.?[TtYy][RrEe][UuSs][Ee]?.?,OPTIONS_SET+= \1,' \ + -e 's,^WITHOUT_([^=]*)=[ ]*.?[TtYy][RrEe][UuSs][Ee]?.?,OPTIONS_UNSET+= \1,' \ + >> $tmpfile + fi done - echo "_FILE_COMPLETE_OPTIONS_LIST=$options_read" >> $tmpfile - mv $tmpfile $optionsfile - chmod 644 $optionsfile - fi -done + + diff -yW 80 $filename $tmpfile + + <