diff --git a/misc/config/config-games.in b/misc/config/config-games.in index 48204df50..7d3fac406 100644 --- a/misc/config/config-games.in +++ b/misc/config/config-games.in @@ -34,7 +34,7 @@ menu_begin MENU_PKG_GAMES_GENERAL 'Games Options' block_end comment '- Game specific settings' block_begin 4 -%include package/*/*/subconfig-games.in +include "package/*/*/subconfig-games.in" block_end menu_end diff --git a/misc/config/config-libs.in b/misc/config/config-libs.in index 10ee1296d..bfa91eb6f 100644 --- a/misc/config/config-libs.in +++ b/misc/config/config-libs.in @@ -21,5 +21,5 @@ # --- ROCK-COPYRIGHT-NOTE-END --- menu_begin MENU_PKG_LIBS_GENERAL 'Library Options' -%include package/*/*/subconfig-libs.in +include "package/*/*/subconfig-libs.in" menu_end diff --git a/misc/output/noexpertconfig.in b/misc/output/noexpertconfig.in index 96b746870..7d313d9bc 100644 --- a/misc/output/noexpertconfig.in +++ b/misc/output/noexpertconfig.in @@ -27,6 +27,6 @@ block_begin 3 ROCKCFG_OUTPUT_TERM_COLOR 1 bool 'Print Build-Output to terminal when building' \ ROCKCFG_VERBOSE 0 -%include misc/output/*/config.in +include misc/output/*/config.in block_end diff --git a/misc/pkgsel/bbs.in b/misc/pkgsel/bbs.in index 73642eb38..4f7f3b6c8 100644 --- a/misc/pkgsel/bbs.in +++ b/misc/pkgsel/bbs.in @@ -50,4 +50,3 @@ ADD wget ADD xfsprogs DISABLE_REST - diff --git a/misc/pkgsel/benchmark.in b/misc/pkgsel/benchmark.in index 47475b3e9..648e0910f 100644 --- a/misc/pkgsel/benchmark.in +++ b/misc/pkgsel/benchmark.in @@ -23,7 +23,6 @@ # TITLE: A base selection for benchmarking purposes # - INCLUDE basic.set INCLUDE common.set INCLUDE xorg.set @@ -33,4 +32,3 @@ REMOVE intel-rng REMOVE microcode_ctl DISABLE_REST - diff --git a/misc/pkgsel/config-100.in b/misc/pkgsel/config-100.in new file mode 100644 index 000000000..4390f7612 --- /dev/null +++ b/misc/pkgsel/config-100.in @@ -0,0 +1,60 @@ +#!/bin/bash + + comment '- Additional Package Selection' + block_begin 3 + choice ROCKCFG_PKGSEL_TPL none none 'No package preselection template' \ + $( cd misc/pkgsel ; grep -H "^# TITLE: " *.in | \ + tr ' ' '_' | sed 's,\.in:#_TITLE:_, ,' ) + if [ "$ROCKCFG_EXPERT" == 1 ] ; then + if [ -f misc/pkgsel/${ROCKCFG_PKGSEL_TPL}.in ]; then + pkgfilter sed -e "$( . ./misc/pkgsel/macros + . ./misc/pkgsel/${ROCKCFG_PKGSEL_TPL}.in)" + fi + fi + + bool 'Custom package selection' ROCKCFG_PKGSEL 0 + if [ "$ROCKCFG_PKGSEL" = 1 ] ; then + menu_begin MENU_PKGSEL_RULES 'Edit package selection rules' + editfile ROCKCFG_PKGSEL_FILE config/$config.$swpid/pkgsel \ + 'Package selection rules' + menu_end + +# Syntax for package selection rules is: +# +# is a single character: x or X enables the packages matching +# , o or O disables them, - omits them in the packages list. +# consists of one or more white-space separated sed patterns. +# is performed on every line in the list matching all patterns of a rule. +# If the first of a rule is a !, is performed on every line +# _not_ matching _any_ of a rule. + + if [ "$ROCKCFG_EXPERT" == 1 ] ; then + filterscript="" + while read action not patternlist ; do + [ "$not" != "!" ] && { patternlist="$not" ; not="" ; } + case "$action" in + [xX]) action='s,^O ,X ,' ;; + [oO]) action='s,^X ,O ,' ;; + -) action='d' ;; + *) continue ;; + esac + while read pattern ; do + filterscript="$filterscript /[ =]$pattern / $not $action ;" + done < <( echo "$patternlist" | tr '\t ' '\n\n' ) + done < config/$config.$swpid/pkgsel + pkgfilter sed -e "$filterscript" + fi + fi + + startprog ROCKCFG_SHOW_PKGLIST 'Show the current package list' \ + "sort -k1,1r -k3,3n \ + < config/$config.$swpid/packages \ + | cut -f1,2,4,5,8- -d' ' | sed 's, [^ ]*$,,' \ + | tr ' ' '\t' | expand -t2,13,30, \ + > config/$config.$swpid/packages.txt ; \ + ./src/rockdialog.bin --title 'ROCK Linux Config - Package List' \ + --backtitle 'ROCK Linux $rockver Configuration' \ + --textbox config/$config.$swpid/packages.txt \ + $(( $lines - 4 )) $(( $columns - 5 ))" + block_end + comment ' ' diff --git a/misc/pkgsel/macros b/misc/pkgsel/macros index 5e1d1c67d..9e5d32ccd 100644 --- a/misc/pkgsel/macros +++ b/misc/pkgsel/macros @@ -1,4 +1,4 @@ -# this is to be sourced by bash +#!/bin/bash INCLUDE() { if echo "$1" | grep -q '.*\.set$' @@ -10,13 +10,13 @@ INCLUDE() { } ADD() { - echo "/ $1 / { p; d; };" + echo "/[ =]$1 / { p ; d } ;" } + REMOVE() { - echo "/ $1 / { s/^X /O / ; p; d; };" + echo "/[ =]$1 / { s/^X /O / ; p ; d } ;" } DISABLE_REST() { - echo 's/^X /O /;' + echo 's/^X /O / ;' } - diff --git a/misc/pkgsel/minimal+xorg.in b/misc/pkgsel/minimal+xorg.in index e35bb9ee7..ed53301b5 100644 --- a/misc/pkgsel/minimal+xorg.in +++ b/misc/pkgsel/minimal+xorg.in @@ -27,4 +27,3 @@ INCLUDE common.set INCLUDE xorg.set DISABLE_REST - diff --git a/misc/pkgsel/minimal-desktop.in b/misc/pkgsel/minimal-desktop.in index 13bd37be8..6e2e92b8e 100644 --- a/misc/pkgsel/minimal-desktop.in +++ b/misc/pkgsel/minimal-desktop.in @@ -22,11 +22,9 @@ # # TITLE: Minimalistic KDE Desktop - INCLUDE basic.set INCLUDE common.set INCLUDE xorg.set INCLUDE kde-desktop.set DISABLE_REST - diff --git a/misc/pkgsel/minimal-gnome-desktop.in b/misc/pkgsel/minimal-gnome-desktop.in index f7e7e5c17..06a7e31fa 100644 --- a/misc/pkgsel/minimal-gnome-desktop.in +++ b/misc/pkgsel/minimal-gnome-desktop.in @@ -6,4 +6,3 @@ INCLUDE xorg.set INCLUDE gnome-desktop.set DISABLE_REST - diff --git a/misc/pkgsel/minimal-router.in b/misc/pkgsel/minimal-router.in index 595e88044..00ea0d05f 100644 --- a/misc/pkgsel/minimal-router.in +++ b/misc/pkgsel/minimal-router.in @@ -22,7 +22,6 @@ # # TITLE: Minimalistic router package selection - INCLUDE basic.set INCLUDE common.set @@ -33,4 +32,3 @@ ADD nagios ADD bridge-utils DISABLE_REST - diff --git a/misc/pkgsel/minimal.in b/misc/pkgsel/minimal.in index 474644a74..542317984 100644 --- a/misc/pkgsel/minimal.in +++ b/misc/pkgsel/minimal.in @@ -25,4 +25,3 @@ INCLUDE basic.set DISABLE_REST - diff --git a/package/base/bash/postconfig.in b/package/base/bash/postconfig.in index 715faf9df..b121015ea 100644 --- a/package/base/bash/postconfig.in +++ b/package/base/bash/postconfig.in @@ -1,4 +1,5 @@ # We rely on bash so heavily that it makes no sense to disable default bash, imho. -# Therefore make sure that it is always enabled. +# Enable default bash and build non-default bash in stages 5 and 9. -pkgenable bash=$ROCKCFG_PKG_BASH_DEFAULT +pkgfilter sed -e "/ bash=[^ ]* / { h ; s,^\(.\) [^ ]\{10\} ,\1 -----5---9 , } ; \ + / bash=$ROCKCFG_PKG_BASH_DEFAULT / { x ; s,^. ,X , }" diff --git a/package/base/bash/preconfig.in b/package/base/bash/preconfig.in index 823c45b00..3d6cc3144 100644 --- a/package/base/bash/preconfig.in +++ b/package/base/bash/preconfig.in @@ -22,13 +22,7 @@ if pkgcheck bash X then - if [ "$ROCKCFG_PKG_BASH_DEFAULT" == "bash2" ]; then - pkgfork bash bash2 - pkgfork bash bash3 stages "-----5---9" - elif [ "$ROCKCFG_PKG_BASH_DEFAULT" == "bash3" ]; then - pkgfork bash bash2 stages "-----5---9" - pkgfork bash bash3 - fi - pkgremove bash + pkgfork bash bash2 + pkgfork bash bash3 + pkgremove bash fi - diff --git a/package/base/bdb/postconfig.in b/package/base/bdb/postconfig.in new file mode 100644 index 000000000..eab75cb37 --- /dev/null +++ b/package/base/bdb/postconfig.in @@ -0,0 +1,3 @@ +#!/bin/bash +[ "$ROCKCFG_PKG_BDB_DEFAULT" != "none" ] && \ + pkgenable $ROCKCFG_PKG_BDB_DEFAULT diff --git a/package/base/gcc/config-300.in b/package/base/gcc/config-300.in index 312fb2e04..70e65ee8e 100644 --- a/package/base/gcc/config-300.in +++ b/package/base/gcc/config-300.in @@ -80,28 +80,28 @@ then bool 'Use Stack-Smashing Protector when available' \ ROCKCFG_PKG_GCC_STACKPRO 0 - %include package/*/*/subconfig-gcc.in + include "package/*/*/subconfig-gcc.in" if pkgcheck gcc=gcc2 X; then comment ' ' comment '--- GCC 2.x options' bool 'Do not build CHILL compiler' \ ROCKCFG_PKG_GCC2_NO_CHILL 1 - %include package/*/*/subconfig-gcc2.in + include "package/*/*/subconfig-gcc2.in" fi if pkgcheck gcc=gcc32 X; then comment ' ' comment '--- GCC 3.2.x options' bool 'Do not build JAVA compiler' \ ROCKCFG_PKG_GCC32_NO_JAVA 1 - %include package/*/*/subconfig-gcc32.in + include "package/*/*/subconfig-gcc32.in" fi if pkgcheck gcc=gcc33 X; then comment ' ' comment '--- GCC 3.3.x options' bool 'Do not build JAVA compiler' \ ROCKCFG_PKG_GCC33_NO_JAVA 1 - %include package/*/*/subconfig-gcc33.in + include "package/*/*/subconfig-gcc33.in" fi if pkgcheck gcc=gcc34 X; then comment ' ' @@ -110,7 +110,7 @@ then ROCKCFG_PKG_GCC34_NO_JAVA 1 bool 'Do profiled bootstrap' \ ROCKCFG_PKG_GCC34_PROFILED 1 - %include package/*/*/subconfig-gcc34.in + include "package/*/*/subconfig-gcc34.in" fi if pkgcheck gcc=gcc40 X; then comment ' ' @@ -119,7 +119,7 @@ then ROCKCFG_PKG_GCC40_NO_JAVA 1 bool 'Do profiled bootstrap' \ ROCKCFG_PKG_GCC40_PROFILED 1 - %include package/*/*/subconfig-gcc40.in + include "package/*/*/subconfig-gcc40.in" fi if pkgcheck gcc=gcc41 X; then comment ' ' @@ -128,7 +128,7 @@ then ROCKCFG_PKG_GCC41_NO_JAVA 1 bool 'Do profiled bootstrap' \ ROCKCFG_PKG_GCC41_PROFILED 1 - %include package/*/*/subconfig-gcc41.in + include "package/*/*/subconfig-gcc41.in" fi menu_end diff --git a/package/base/gcc/gcc.conf b/package/base/gcc/gcc.conf index d71badddb..52cc6df34 100644 --- a/package/base/gcc/gcc.conf +++ b/package/base/gcc/gcc.conf @@ -1,3 +1,4 @@ +#!/bin/bash # --- ROCK-COPYRIGHT-NOTE-BEGIN --- # # This copyright note is auto-generated by ./scripts/Create-CopyPatch. @@ -87,6 +88,7 @@ genrockspecs() { | tr '@' '\n' > specs.chroot } +hook_add preconf 2 custmain() { # Apply the respective gcc-2 or gcc-3 stack protector patch. . $base/package/base/gcc/apply-protector.sh $base gcc${pkg_gcc_version} "$desc_D" diff --git a/package/base/linux/config-500.in b/package/base/linux/config-500.in index 10d818d61..2d871f4c4 100644 --- a/package/base/linux/config-500.in +++ b/package/base/linux/config-500.in @@ -100,7 +100,7 @@ then rm -f config/$config.$swpid/linux.cfg fi - %include package/*/*/pkg_config_linux.in + include "package/*/*/pkg_config_linux.in" menu_end fi diff --git a/package/import/freedict/freedict.desc b/package/import/freedict/freedict.desc index 572261cba..37566684b 100644 --- a/package/import/freedict/freedict.desc +++ b/package/import/freedict/freedict.desc @@ -1,4 +1,3 @@ - [COPY] --- ROCK-COPYRIGHT-NOTE-BEGIN --- [COPY] [COPY] This copyright note is auto-generated by ./scripts/Create-CopyPatch. @@ -41,4 +40,3 @@ [D] 3061048105 freedict-database-20050726.xml !http://www.freedict.org/freedict-database.xml #include package/import/freedict/hosted_freedict.desc - diff --git a/package/mnemoc/uclibc/uclibc.desc b/package/mnemoc/uclibc/uclibc.desc index 39c7398f0..dbd88aaff 100644 --- a/package/mnemoc/uclibc/uclibc.desc +++ b/package/mnemoc/uclibc/uclibc.desc @@ -42,7 +42,7 @@ [L] GPL [S] Alpha [V] 0.9.26 -[P] 0 01---5---9 100.500 +[P] O 01---5---9 100.500 [D] 1079526986 uClibc-0.9.26.tar.bz2 http://www.uclibc.org/downloads/ #[D] 2465375957 uClibc-locale-030818.tgz http://www.uclibc.org/downloads/ diff --git a/scripts/Config b/scripts/Config index 92747b879..3b7694eab 100755 --- a/scripts/Config +++ b/scripts/Config @@ -87,8 +87,8 @@ done if [ $do_config_cycle = 0 ] then export swpid=swp$$ - rm -f config.data.$swpid config.dialog.$swpid config.out.$swpid config.help.$swpid - rm -f config.pcache.data.$swpid config.pcache.cmd.$swpid + rm -f config.{data,dialog,out,help}.$swpid + rm -f config.pcache.*.$swpid rm -f rockdialog.scrltmp # src/rockdialog.bin mkdir -p src @@ -100,34 +100,17 @@ then mv src/rockdialog.bin.$swpid src/rockdialog.bin fi - echo "Creating configuration script." - cat << EOT > src/rockconfig.awk.$swpid -#!/usr/bin/awk -f + arch=none + if expr "`uname -m`" : "x86_64" > /dev/null ; then arch=x86 ; fi + if expr "`uname -m`" : "i.86" > /dev/null ; then arch=x86 ; fi + if expr "`uname -m`" : "alpha" > /dev/null ; then arch=alpha ; fi + if expr "`uname -m`" : "ppc" > /dev/null ; then arch=powerpc ; fi + if expr "`uname -m`" : "powerpc" > /dev/null ; then arch=powerpc ; fi + if expr "`uname -m`" : "sparc" > /dev/null ; then arch=sparc ; fi + if expr "`uname -m`" : "mips" > /dev/null ; then arch=mips ; fi -FNR == 1 { - if ( lastfile ) { - print "### END of " lastfile; - } - print "### BEGIN of " FILENAME; - lastfile = FILENAME; -} - -END { - print "### END of " FILENAME; -} - -\$1 == "%include" { - \$1 = "awk -f src/rockconfig.awk"; - system(\$0); - next; -} - -\$1 == "#" { next; } -{ print; } -EOT - mv src/rockconfig.awk.$swpid src/rockconfig.awk - awk -f src/rockconfig.awk scripts/config.in > src/rockconfig.in.$swpid 2> /dev/null - mv src/rockconfig.in.$swpid src/rockconfig.in + export ROCKCFG_ARCH="$arch" ; export ROCKCFG_EXPERT=0 + export ROCKCFG_ID="$rockver" echo "Running ROCK Linux $rockver configuration ..." while "$0" -cfg $config $oldconfig $profile $nobashmod -cycle ; do : ; done @@ -163,106 +146,96 @@ else printf "%7d %7Ld %10.3f %s\n", count[id], time[id], time[id]/count[id], id; } ' < config.profile | sort -n -k2 > config.profile.new - mv config.profile.new config.profile + mv config.profile{.new,} } fi bprof main start - . scripts/config.func -arch=none -if expr "`uname -m`" : "x86_64" > /dev/null ; then arch=x86 ; fi -if expr "`uname -m`" : "i.86" > /dev/null ; then arch=x86 ; fi -if expr "`uname -m`" : "alpha" > /dev/null ; then arch=alpha ; fi -if expr "`uname -m`" : "ppc" > /dev/null ; then arch=powerpc ; fi -if expr "`uname -m`" : "powerpc" > /dev/null ; then arch=powerpc ; fi -if expr "`uname -m`" : "sparc" > /dev/null ; then arch=sparc ; fi -if expr "`uname -m`" : "mips" > /dev/null ; then arch=mips ; fi -current="" ; export ROCKCFG_ARCH="$arch" ; export ROCKCFG_EXPERT=0 +current="" menu_this=0 ; menu_current=0 ; menu_counter=0 menu_stack=x ; menu_back=-1 ; menu_backpos=-1 mkdir -p config/$config -touch config/$config/config -touch config/$config/packages +touch config/$config/{config,packages} rm -rf config/$config.$swpid -cp -r config/$config config/$config.$swpid - -configtitle="$(printf ' %-50s %6s active packages ]' \ - "ROCK Linux $rockver Configuration - $config" \ - "[ $(echo `grep '^X' config/$config/packages | wc -l`)" )" +cp -r config/$config{,.$swpid} +rm -f config.{dialog,data,help}.$swpid +touch config.{dialog,data,help}.$swpid bprof main stop -. ./config/$config.$swpid/config + if [ -f config/$config.$swpid/config_usr ]; then nousrconfig=0 . ./config/$config.$swpid/config_usr else nousrconfig=1 fi -bprof main start -rm -f config.dialog.$swpid config.data.$swpid config.help.$swpid -touch config.dialog.$swpid config.data.$swpid config.help.$swpid -echo -e "#\n# ROCK Linux $rockver Config File\n#" > config/$config.$swpid/config -echo -e "#\n# ROCK Linux $rockver User Config File\n#" > config/$config.$swpid/config_usr +bprof main start spacer="" ; expert=0 ; tabspace="5" ; tabspace_list="" commentnr=0 ; editfilenr=0 -bprof mkpkglist start -cmd="./scripts/Create-PkgList" -[ "$ROCKCFG_DISABLE_BROKEN" = 1 ] && cmd="$cmd -nobroken" -cmd="$cmd $ROCKCFG_ARCH" - -if [ "$cmd" != "`cat config.pcache.cmd.$swpid 2> /dev/null`" ] ; then - eval "$cmd" | tee config.pcache.data.$swpid > config/$config.$swpid/packages - echo "$cmd" > config.pcache.cmd.$swpid +cmd="$ROCKCFG_ARCH" +[ "$ROCKCFG_DISABLE_BROKEN" = 1 ] && cmd="${cmd}-nobroken" +if [ -f config.pcache.$cmd.$swpid ] ; then + cat config.pcache.$cmd.$swpid > config/$config.$swpid/packages else - cat config.pcache.data.$swpid > config/$config.$swpid/packages + eval "./scripts/Create-PkgList $cmd" | tee config.pcache.data.$swpid \ + > config/$config.$swpid/packages fi -bprof mkpkglist stop +bprof main stop -export ROCKCFG_ID="$rockver"; pkgin; . src/rockconfig.in; pkgout -echo "export ROCKCFG_ID='$ROCKCFG_ID'" >> config/$config.$swpid/config -rm -f config/$config.$swpid/*.tmp +echo -e "#\n# ROCK Linux $rockver Config File\n#\n" \ + > config/$config.$swpid/config +echo -e "#\n# ROCK Linux $rockver User Config File\n#" \ + > config/$config.$swpid/config_usr -sort -k3 config/$config.$swpid/packages > config/$config.$swpid/packages.sorted -mv -f config/$config.$swpid/packages.sorted config/$config.$swpid/packages +pkgin +bprof rockconfig start +. scripts/config.in +bprof rockconfig stop +pkgout -cut -f1,2,4,5,8- -d' ' config/$config.$swpid/packages | sed 's, [^ ]*$,,' | \ -tr ' ' '\t' | expand -t2,15,35, > config/$config.$swpid/packages.txt +bprof main start +rm -f config/$config.$swpid/*.tmp for x in ${!ROCKCFGUSR_*}; do - eval "echo \"$x='\$$x'\"" + echo "${x}=\"${!x}\"" done >> config/$config.$swpid/config_usr configtitle="$(printf ' %-50s %6s active packages ]' \ "ROCK Linux $rockver Configuration - $config" \ "[ $(echo `grep '^X' config/$config.$swpid/packages | wc -l`)" )" - bprof main stop if [ -z "$oldconfig" ] ; then + bprof rockdialog start eval "./src/rockdialog.bin --title 'Build Config' \ --backtitle '$configtitle' \ --menu 'Arrow keys navigate the menu. Press to activate menu items. Highlighted letters are hotkeys.' \ $(( $lines - 4 )) $(( $columns - 5 )) $(( $lines - 12 )) \ '$current' `tr '\n' ' ' < config.dialog.$swpid`" 2> config.out.$swpid returncode=$? ; item="`cat config.out.$swpid`" + bprof rockdialog stop else returncode=1 fi -bprof main start +bprof main start [ "$returncode" = 1 -a "$menu_back" -ne -1 ] && returncode="menu-back" writeback() { + sort -k1,1r -k3,3 config/$config.$swpid/packages \ + > config/$config.$swpid/packages.sorted + mv -f config/$config.$swpid/packages{.sorted,} + for x in $( ls config/$config.$swpid ); do - cp config/$config.$swpid/$x config/$config.$swpid/__tmp - mv config/$config.$swpid/__tmp config/$config/$x + cp config/$config.$swpid/{$x,__tmp} + mv config/$config{.$swpid/__tmp,/$x} done for x in $( ls config/$config ); do [ -e config/$config.$swpid/$x ] || rm -f config/$config/$x @@ -270,6 +243,7 @@ writeback() { rm -rf config/$config.$swpid } +exit_code=0 case "$returncode" in 0|6) command="`grep "^$item " config.data.$swpid | cut -f2-`" @@ -284,15 +258,12 @@ case "$returncode" in } >> config/$config.$swpid/config_usr ;; 1|255) - rm -f config.data.$swpid config.dialog.$swpid config.out.$swpid config.help.$swpid - rm -f config.pcache.data.$swpid config.pcache.cmd.$swpid + rm -f config.{data,dialog,out,help}.$swpid + rm -f config.pcache.*.$swpid rm -f rockdialog.scrltmp # src/rockdialog.bin echo "New config written to config/$config/*." echo "Cleaning up. Configuration finished." - writeback - bprof main stop - bprof_print - exit 1 ;; + exit_code=1 ;; 2) tempitem=$item item=$(echo $item | cut -f1 -d' ') # dialog(1) bug? @@ -311,15 +282,12 @@ case "$returncode" in ;; *) echo "unknown returncode: $returncode" - writeback - bprof main stop - bprof_print - exit 1 ;; + exit_code=1 ;; esac -writeback +writeback bprof main stop bprof_print -exit 0 +exit $exit_code diff --git a/scripts/config.func b/scripts/config.func index e0b1afb0d..a64f7f33e 100644 --- a/scripts/config.func +++ b/scripts/config.func @@ -1,3 +1,4 @@ +#!/bin/bash # --- ROCK-COPYRIGHT-NOTE-BEGIN --- # # This copyright note is auto-generated by ./scripts/Create-CopyPatch. @@ -42,6 +43,7 @@ var_insert() { # pkgcheck pattern X|O|. # pkgfilter cmd arg1 ... # + if [ -n "$nobashmod" ] then pkgin() { :; } @@ -59,10 +61,10 @@ then bprof pkgenable start local pattern patterns for pattern; do - patterns="$patterns -e '/ $pattern / s/^./X/'" + patterns="$patterns /[ =]$pattern / s,^O,X, ;" done if [ "$patterns" ]; then - eval "__pkgfilter sed $patterns" + __pkgfilter sed -e "$patterns" fi bprof pkgenable stop } @@ -70,10 +72,10 @@ then bprof pkgdisable start local pattern patterns for pattern; do - patterns="$patterns -e '/ $pattern / s/^./O/'" + patterns="$patterns /[ =]$pattern / s,^X,O, ;" done if [ "$patterns" ]; then - eval "__pkgfilter sed $patterns" + __pkgfilter sed -e "$patterns" fi bprof pkgdisable stop } @@ -81,18 +83,21 @@ then bprof pkgremove start local pattern patterns if [ "$1" ]; then - patterns=" $1 "; shift + patterns="/ $1 / d ;"; shift for pattern; do - patterns="$patterns| $pattern " + patterns="$patterns / $pattern / d ;" done - __pkgfilter egrep -v "$patterns" + __pkgfilter sed -e "$patterns" fi bprof pkgremove stop } pkgcheck() { bprof pkgcheck start - local pattern="$1"; pattern="${pattern//+/\\+}" - egrep -q "^$2.*[ =]($pattern) " config/$config.$swpid/packages; local ret=$? + local pattern="$1" stat="$2" + + sed -n -e "/^$stat.*[ =]$pattern / q0 ; $ q1 ;" \ + < config/$config.$swpid/packages + local ret=$? bprof pkgcheck stop return $ret } @@ -224,21 +229,21 @@ set_data() { set_name="ROCKCFGSET_${1#ROCKCFG_}" usr_name="ROCKCFGUSR_${1#ROCKCFG_}" - eval "usr_data=\"\$$usr_name\"" + usr_data="${!usr_name}" menumode=0 data="$2" - if eval "[ \"\$$set_name\" ]"; then - eval "data=\"\$$set_name\"" + if [ "${!set_name}" ]; then + data="${!set_name}" fi dfl_data="$data" if [ $ROCKCFG_EXPERT -eq 1 -o $expert -eq 0 ]; then menumode=2 - if [ $nousrconfig -eq 1 ] && eval "[ -n \"\$$1\" -a \"\$$1\" != \"\$data\" ]"; then - eval "$usr_name=\"\$$1\"" - eval "usr_data=\"\$$1\"" + if [ $nousrconfig -eq 1 ] && [ -n "${!1}" -a "${!1}" != "$data" ] ; then + eval "$usr_name=\"${!1}\"" + usr_data="${!1}" fi if [ -n "$usr_data" ]; then data="$usr_data" @@ -420,8 +425,6 @@ editfile() { block_end comment "\`------${3//?/-}------'\''" spacer="$x" - else - rm -f "$2" fi bprof editfile stop } @@ -473,11 +476,11 @@ block_end() { } expert_begin() { - expert=$(( $exprt + 1 )) + expert=$(( $expert + 1 )) } expert_end() { - expert=$(( $exprt - 1 )) + expert=$(( $expert - 1 )) } menu_begin() { diff --git a/scripts/config.in b/scripts/config.in index 626e5b43b..3c0d11dbe 100644 --- a/scripts/config.in +++ b/scripts/config.in @@ -1,3 +1,4 @@ +#!/bin/bash # # --- ROCK-COPYRIGHT-NOTE-BEGIN --- # @@ -39,8 +40,10 @@ # # * misc/*/noexpertconfig.in # -# * {package/*,misc}/*/config-*.in -# * {package/*,misc}/*/config.in +# * misc/*/config-*.in +# * misc/*/config.in +# * package/*/config-*.in +# * package/*/config.in # * Various common build options # # - package/*/*/postconfig.in @@ -70,7 +73,15 @@ CFGTEMP_ARCHLIST="" CFGTEMP_TARGETLIST="" -%include architecture/*/preconfig.in +include () +{ + local x + for x in $@ ; do + [ -f "$x" ] && . "./$x" + done +} + +include "architecture/*/preconfig.in" comment_id '- Architecture, CPU and Optimization' COMMENT_ARCHCPUOPT block_begin 7 @@ -105,21 +116,24 @@ block_begin 7 fi block_end -%include misc/*/preconfig.in -%include target/*/preconfig.in -%include package/*/*/preconfig.in +include "misc/*/preconfig.in" +include "target/*/preconfig.in" +include "package/*/*/preconfig.in" if [ "$ROCKCFG_CROSSBUILD" = 1 ] ; then + pkgfilter sed -e 's,^\(. ..\)[^ ]*,\1--------, ;' if [ $ROCKCFG_CROSS_TESTALL = 1 ]; then - pkgfilter sed -e 's,^\(. ..\)[^ ]*,\1--------,; s,^\(. .\)[1X?],\11,; s,^\(. \)X,\1-,;' + pkgfilter sed -e 's,^\(. .\)?,\11, ;' else - pkgfilter sed -e 's,^\(. ..\)[^ ]*,\1--------,; s,^\(. .\)[1X],\11,; s,^\(. .\)?,\1-,; s,^\(. \)X,\1-,;' + pkgfilter sed -e 's,^\(. .\)?,\1-, ;' fi + pkgfilter sed -e 's,^\(. .\)X,\11, ; s,^\(. \)X,\1-, ;' else + pkgfilter sed -e 's,^\(. .\)[?X],\1-, ;' if [ "$ROCKCFG_PSEUDONATIVE" = 1 ] ; then - pkgfilter sed -e 's,^\(. .\)[?X],\1-,; s,^\(. \)X,\10,;' + pkgfilter sed -e 's,^\(. \)X,\10, ;' else - pkgfilter sed -e 's,^\(. .\)[?X],\1-,; s,^\(. \)X,\1-,;' + pkgfilter sed -e 's,^\(. \)X,\1-, ;' fi fi @@ -130,8 +144,7 @@ block_begin 7 choice ROCKCFG_TARGET crystal $CFGTEMP_TARGETLIST ROCKCFG_ID="$ROCKCFG_ID-$ROCKCFG_TARGET" - if [ -f target/$ROCKCFG_TARGET/config.in ] - then . target/$ROCKCFG_TARGET/config.in ; fi + include target/$ROCKCFG_TARGET/config.in text 'Linguas (translations)' ROCKCFG_LINGUAS 'de es fr it ru' block_end @@ -190,7 +203,7 @@ block_begin 3 fi block_end -%include misc/*/noexpertconfig.in +include "misc/*/noexpertconfig.in" echo "## BUILDENV_SETTINGS_END" >> config/$config.$swpid/config @@ -199,8 +212,11 @@ block_begin 3 bool 'Show expert-only and experimental options' ROCKCFG_EXPERT 0 block_end -if [ $ROCKCFG_EXPERT = 1 ] ; then ROCKCFG_ID="$ROCKCFG_ID-expert" -else ROCKCFG_ID="$ROCKCFG_ID-noexpert" ; fi +if [ $ROCKCFG_EXPERT == 1 ] ; then + ROCKCFG_ID="$ROCKCFG_ID-expert" +else + ROCKCFG_ID="$ROCKCFG_ID-noexpert" +fi expert_begin @@ -221,110 +237,10 @@ expert_begin block_end comment ' ' - comment '- Additional Package Selection' - block_begin 3 - choice ROCKCFG_PKGSEL_TPL none none 'No package preselection template' \ - $( cd misc/pkgsel; grep -H "^# TITLE: " *.in | tr ' ' '_' | sed 's,\.in:#_TITLE:_, ,' ) - if [ -f misc/pkgsel/${ROCKCFG_PKGSEL_TPL}.in ]; then - # begin the sed string - echo "pkgfilter sed '" > config/$config.$swpid/predefined-pkgsel.parsed - . ./misc/pkgsel/macros - . ./misc/pkgsel/${ROCKCFG_PKGSEL_TPL}.in >> config/$config.$swpid/predefined-pkgsel.parsed - # end the sed string - echo "'" >> config/$config.$swpid/predefined-pkgsel.parsed - . config/$config.$swpid/predefined-pkgsel.parsed - fi - bool 'Custom package selection' ROCKCFG_PKGSEL 0 - if [ "$ROCKCFG_PKGSEL" = 1 ] ; then - menu_begin MENU_PKGSEL_RULES 'Edit package selection rules' - # Active error checking: explicitly show an annoying popup - filter=`printf "^[-xXoO][ \t]\+[a-zA-Z0-9_/*+.-]"` - if grep -lvq "$filter" config/$config.$swpid/pkgsel 2> /dev/null && \ - ./src/rockdialog.bin --title "Build Config" --yesno \ - "Invalid line(s) in package rule set. Remove?" 5 50 - then - grep "$filter" < config/$config.$swpid/pkgsel \ - > config/$config.$swpid/pkgsel.new - mv config/$config.$swpid/pkgsel.new config/$config.$swpid/pkgsel - fi - unset filter - - editfile ROCKCFG_PKGSEL_FILE config/$config.$swpid/pkgsel \ - 'Package selection rules' - -# Create an awk program from the list of package selection rules stored in -# config/$config.$swpid/pkgsel which is applied to the list of packages stored in -# config/$config.$swpid/packages. -# Syntax for package selection rules is: -# -# is a single character: x or X enables the packages matching -# , o or O disables them, - omits them in the packages list. -# Any other character exits the awk program, resulting in an empty list. -# consists of one or more white-space separated s. -# consists of letters, numbers, and characters _ * + . = - -# is performed on every line in the list matching all s of a rule. -# If the first of a rule is a !, is performed on every line -# _not_ matching _any_ of a rule. -# A of the form = denotes a pkgforked package; -# such a will duplicate the line of the and substitute its -# package name with the name of the pkgforked package, that is, the . - - echo "# created from 'pkgsel'" > config/$config.$swpid/pkgsel.awk - while read action patternlist ; do - case "$action" in - [xX]) - action='$1="X"' ;; - [oO]) - action='$1="O"' ;; - -) - action='next' ;; - *) - echo '{ exit; }' - continue ;; - esac - address="" ; first="(" ; others="&&" - while read pattern ; do - if [ -z "$address" ] && \ - [ "$pattern" = "!" ] ; then - address="! " ; others="||" - else - pattern="$( echo "$pattern" | sed \ - -e 's,[^a-zA-Z0-9_/\*+\.=-],,g' \ - -e 's,[/\.\+],\\&,g' \ - -e 's,\*,[^ ]*,g' )" - [ "$pattern" ] || continue - address="$address$first /[ =]$pattern[ =]/" - first=" $others" - fi - done < <( echo "$patternlist" | tr '\t ' '\n\n' ) - echo "$address ) { $action; }" - done < config/$config.$swpid/pkgsel >> config/$config.$swpid/pkgsel.awk - echo '{ print; }' >> config/$config.$swpid/pkgsel.awk - - pkgout - gawk -f config/$config.$swpid/pkgsel.awk < config/$config.$swpid/packages \ - > config/$config.$swpid/packages.new 2> /dev/null - if [ -s config/$config.$swpid/packages.new ] ; then - mv config/$config.$swpid/packages.new config/$config.$swpid/packages - else - rm -f config/$config.$swpid/packages.new - comment '---- Syntax error(s) in rule set!' - fi - pkgin - menu_end - else - rm -f config/$config.$swpid/pkgsel - rm -f config/$config.$swpid/pkgsel.awk - fi - startprog ROCKCFG_SHOW_PKGLIST 'Show the current package list' \ - "./src/rockdialog.bin --title 'ROCK Linux Config - Package List' \ - --backtitle 'ROCK Linux $rockver Configuration' \ - --textbox config/$config.$swpid/packages.txt \ - $(( $lines - 4 )) $(( $columns - 5 ))" - block_end - - comment ' ' -%include $( ls {package/*,misc}/*/config{,-*}.in 2>/dev/null | sed 's,\(.*/\)\([^/]*/\)\([^/]*\),\3\2 \1\2\3,' | sort | cut -f2 -d' ' ) + include "$(ls misc/*/config{,-*}.in 2>/dev/null \ + | LC_ALL=C sort -k3,3 -t"/" | tr '\n' ' ')" + include "$(ls package/*/*/config{,-*}.in 2>/dev/null \ + | LC_ALL=C sort -k4,4 -t"/" | tr '\n' ' ')" comment ' ' comment '- Additional GNU Configure Options' @@ -374,11 +290,11 @@ break packages!' fi if [ $ROCKCFG_USE_CROSSCC != 1 ]; then - pkgfilter sed 's,^\([XO] \)0,\1-,' + pkgfilter sed -e 's,^\([XO] \)0,\1-, ;' fi if [ $ROCKCFG_DO_REBUILD_STAGE != 1 ]; then - pkgfilter sed 's,^\([XO] [^ ]*\)9 ,\1- ,' + pkgfilter sed -e 's,^\([XO] [^ ]*\)9 ,\1- , ;' fi choice ROCKCFG_OPT size \ @@ -414,27 +330,24 @@ break packages!' block_end expert_end -%include package/*/*/postconfig.in -%include misc/*/postconfig.in - -if [ -f architecture/$ROCKCFG_ARCH/postconfig.in ] -then . architecture/$ROCKCFG_ARCH/postconfig.in; fi - -if [ -f target/$ROCKCFG_TARGET/postconfig.in ] -then . target/$ROCKCFG_TARGET/postconfig.in; fi +include "package/*/*/postconfig.in" +include "misc/*/postconfig.in" +include architecture/$ROCKCFG_ARCH/postconfig.in +include target/$ROCKCFG_TARGET/postconfig.in if [ "$ROCKCFG_CROSSBUILD" = 1 ] ; then - pkgfilter sed -e 's,^\(. ..\)[^ ]*,\1--------,;' + pkgfilter sed -e 's,^\(. ..\)[^ ]*,\1--------, ;' fi -pkgfilter sed '/^[XO] --* / d;' +pkgfilter sed -e '/^[XO] --* / d ;' -[ $ROCKCFG_EXPERT = 1 ] || +[ "$ROCKCFG_EXPERT" = 1 ] || ROCKCFG_ID="`echo $ROCKCFG_ID | sed 's,-noexpert.*,,'`" [ "$ROCKCFG_IDCKSUM" = 1 ] && ROCKCFG_ID="`echo $ROCKCFG_ID | cksum | cut -f1 -d' '`" const ROCKCFG_SHORTID "$ROCKCFG_ID" -ROCKCFG_ID="$config-$ROCKCFG_ID" +ROCKCFG_ID="$config-$ROCKCFG_ID" +const ROCKCFG_ID "$ROCKCFG_ID" diff --git a/target/crystal/config.in b/target/crystal/config.in index 284c3cf28..c49073459 100644 --- a/target/crystal/config.in +++ b/target/crystal/config.in @@ -27,10 +27,10 @@ if [ $ROCKCFG_TARGET_CRYSTAL_BUILDADDONS = 1 ] then pkgfilter sed \ -e '/ xfree86 / d' \ - -e '/CORE/ s/^\(. .........\)./\1-/' \ - -e '/CORE/ ! s/^\(.\) .........\(.\)/\1 ---------\2/' + -e '/ CORE / s/^\(. .........\)./\1-/' \ + -e '/ CORE / ! s/^\(.\) .........\(.\)/\1 ---------\2/' else - pkgfilter sed -e '/CORE/ ! s/^X/O/' + pkgfilter sed -e '/ CORE / ! s/^X /O /' ROCKCFGSET_DO_REBUILD_STAGE=0 fi diff --git a/target/crystal/postconfig.in b/target/crystal/postconfig.in index a7ce74887..3e28fda99 100644 --- a/target/crystal/postconfig.in +++ b/target/crystal/postconfig.in @@ -22,10 +22,11 @@ if [ $ROCKCFG_TARGET_CRYSTAL_BUILDADDONS = 1 ] then - pkgfilter sed \ - -e '/CORE/ s/^\(. .........\)./\1-/' \ - -e '/CORE/ ! s/^\(.\) .........\(.\)/\1 ---------\2/' + pkgfilter sed -e ' + / CORE / s/^\(. .........\)./\1-/ ; + / CORE / ! s/^\(.\) .........\(.\)/\1 ---------\2/ ; + ' else - pkgfilter sed -e '/CORE/ ! s/^X/O/' + pkgfilter sed -e '/ CORE / ! s/^X/O/ ;' fi diff --git a/target/lvp/config.in b/target/lvp/config.in index f32e86789..8e97e70c3 100644 --- a/target/lvp/config.in +++ b/target/lvp/config.in @@ -22,7 +22,7 @@ pkgfilter sed ' -# Select some packages explicitely +# Select some packages explicitly / 00-dirtree / { p; d; }; / autoconf / { p; d; }; diff --git a/target/rescue/config.in b/target/rescue/config.in index 4f4936794..b84d09435 100644 --- a/target/rescue/config.in +++ b/target/rescue/config.in @@ -94,22 +94,12 @@ pkgfilter sed ' / python / { s/^X /O /p; d; }; / dmapi / { s/^X /O /p; d; }; ' -if [[ $rockver = 2.0* ]] ; then - pkgfilter sed ' - / linux24 / { s/^[XO] .......... /X -?-------- /p; d; }; - / KERNEL / { s/^X /O /p; d; }; - / linux26-src / { s/^X /O /p; d; }; - ' - ROCKCFGSET_PKG_GCC3_NO_JAVA=1 -else - pkgenable linux; - ROCKCFGSET_PKG_LINUX_SRC26=0 - ROCKCFGSET_PKG_LINUX_IMG26=0 +pkgenable linux +ROCKCFGSET_PKG_LINUX_SRC26=0 +ROCKCFGSET_PKG_LINUX_IMG26=0 - ROCKCFGSET_PKG_GCC32_NO_JAVA=1 - ROCKCFGSET_PKG_GCC34_NO_JAVA=1 -fi ; - +ROCKCFGSET_PKG_GCC32_NO_JAVA=1 +ROCKCFGSET_PKG_GCC34_NO_JAVA=1 ROCKCFGSET_CREATE_TARBZ2=1 ROCKCFGSET_CREATE_GEM=0