From 0815575e10c9ec204563a33b53ffed37517d03f6 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Sat, 24 Jul 2004 20:18:31 +0000 Subject: [PATCH] Clifford Wolf: Added $ROCK_BUILD_TARGET marker variable Added pkgmapper support to scripts/Download Added descparser support to scripts/Download Added #include support to descparser Don't "cpan install" deps from Makefile.PL [2004071520332807287] (https://www.rocklinux.net/submaster) git-svn-id: http://www.rocklinux.org/svn/rock-linux/trunk@3605 c5f82cb5-29bc-0310-9cd0-bff59a50e3bc --- Documentation/Developers/PKG-BUILD-VARS | 4 ++- misc/tools-source/descparser.c | 35 ++++++++++++++++++++----- scripts/Build-Pkg | 2 +- scripts/Build-Target | 3 +++ scripts/Build-Tools | 6 ++--- scripts/Download | 35 ++++++++++++++++++++----- scripts/functions | 1 + 7 files changed, 67 insertions(+), 19 deletions(-) diff --git a/Documentation/Developers/PKG-BUILD-VARS b/Documentation/Developers/PKG-BUILD-VARS index 6086e957a..0bb440359 100644 --- a/Documentation/Developers/PKG-BUILD-VARS +++ b/Documentation/Developers/PKG-BUILD-VARS @@ -131,5 +131,7 @@ KCC_WRAPPER_* ..... configuration for Kernel C compiler wrapper F77_WRAPPER_* ..... configuration for Fortran 77 compiler wrapper STRIP_WRAPPER_* ... configuration for strip wrapper -ROCKCFG_* ..... configuration from 'Config' file +ROCK_BUILD_TARGET ... set to '1' in Build-Target + +ROCKCFG_* ........... configuration from 'Config' file diff --git a/misc/tools-source/descparser.c b/misc/tools-source/descparser.c index 246b259a8..7abc78a26 100644 --- a/misc/tools-source/descparser.c +++ b/misc/tools-source/descparser.c @@ -37,6 +37,11 @@ int check_condition(const char *cond) char *right = strtok(0, " \t\n"); int retcode = 0; + if ( !strcmp(left, "xpkg") && getenv("descparser_ign_xpkg") ) { + free(t); + return 1; + } + if ( !strcmp(op, "==") ) { char regex[strlen(right)+3]; char *text = getenv(left); @@ -60,14 +65,16 @@ int check_condition(const char *cond) return retcode; } -int main() -{ - char line[4096]; - int condstack[128]; - int condcount = -1; - int falselevel = 0; +char line[4096]; +int condstack[128]; +int condcount = -1; +int falselevel = 0; + +void parse_file(FILE *f); - while ( fgets(line, 4096, stdin) ) { +void parse_file(FILE *f) +{ + while ( fgets(line, 4096, f) ) { if (line[0] == '#') { if ( !strncmp(line, "#if ", 4) ) { condstack[++condcount] = check_condition(line+4); @@ -86,12 +93,26 @@ int main() } else if ( !strncmp(line, "#endif", 6) ) { if ( !condstack[condcount--] ) falselevel--; + } else + if ( !strncmp(line, "#include ", 9) ) { + FILE *i; + if (strchr(line, '\n')) *strchr(line, '\n') = 0; + i = fopen(line+9, "r"); + if (i) { + parse_file(i); + fclose(i); + } else + fprintf(stderr, "Can't #include '%s'.\n", line+9); } } else if ( !falselevel ) fputs(line, stdout); } +} +int main() +{ + parse_file(stdin); return 0; } diff --git a/scripts/Build-Pkg b/scripts/Build-Pkg index 0d0999020..087cddce4 100755 --- a/scripts/Build-Pkg +++ b/scripts/Build-Pkg @@ -533,7 +533,7 @@ fi # ---- Build Package # -echo_status "Preparing build in src.$pkg.$id" +echo_status "Preparing build in src.$xpkg.$id" if [ $clear_src = 1 ] ; then mkdir -p $builddir; chmod 700 $builddir diff --git a/scripts/Build-Target b/scripts/Build-Target index fbd085e22..49311abf9 100755 --- a/scripts/Build-Target +++ b/scripts/Build-Target @@ -59,6 +59,9 @@ fi . scripts/parse-config . scripts/functions +# so we can disable stuff not available in Build-Target +export ROCK_BUILD_TARGET=1 + build_root="$base/build/$ROCKCFG_ID" build_rock="$base/build/$ROCKCFG_ID/ROCK" build_logs="$build_rock/logs" ; mkdir -p "${build_logs}" diff --git a/scripts/Build-Tools b/scripts/Build-Tools index 0270d2797..b2f9a5706 100755 --- a/scripts/Build-Tools +++ b/scripts/Build-Tools @@ -291,10 +291,8 @@ EOT # Create pkgmapper script # - bash scripts/xfind.sh \ - architecture/$arch/. package/. target/$target/. misc/ -type f \ - -name 'pkgmapper.in' \ - -printf '%f\t%p\n' | sort | awk '{ $1="."; print; }' \ + bash scripts/xfind.sh package/. -type f -name 'pkgmapper.in' \ + -printf '%f\t%p\n' | sort | awk '{ $1="."; print; }' \ > build/$ROCKCFG_ID/ROCK/$toolsdir/lib/pkgmapper.$$ mv build/$ROCKCFG_ID/ROCK/$toolsdir/lib/pkgmapper.$$ \ build/$ROCKCFG_ID/ROCK/$toolsdir/lib/pkgmapper diff --git a/scripts/Download b/scripts/Download index 54f9787c8..a657656ea 100755 --- a/scripts/Download +++ b/scripts/Download @@ -196,6 +196,15 @@ fi #Disable checking for certificates on https downloads curl_options="$curl_options -k" +# build descparser if needed and run it +descparser() { + if [ ! -f src/descparser ]; then + mkdir -p src + cc -o src/descparser misc/tools-source/descparser.c + fi + cat "$@" | descparser_ign_xpkg=1 src/descparser +} + # cksum_chk filename cksum origfile # # This function verifies the checksum. If it fails it renames the file @@ -623,8 +632,8 @@ download_file_now() { list_dtags() { { - grep -H '^\[D\] ' package/*/*/*.desc - grep -H '^[X0-9]' target/*/download.txt | sed 's,:,:[D] ,' + descparser package/*/*/*.desc | grep '^\[D\] ' + grep -h '^[X0-9]' target/*/download.txt | sed 's,^,[D] ,' } | column_clean } @@ -689,7 +698,7 @@ required() { [ "$forkedpkg" = "$pkg" ] || pkg=$forkedpkg if [ "$on" = "X" ] ; then - grep -H '^\[D\] ' package/$repo/$pkg/$pkg.desc > src/down.$$.lst + descparser package/$repo/$pkg/$pkg.desc | grep '^\[D\] ' > src/down.$$.lst while read tag cksum file url flags ; do download_file "`source_file cksum $file url $flags`" "$url" "$cksum" "$repo" "$pkg" done < src/down.$$.lst ; rm -f src/down.$$.lst @@ -714,7 +723,7 @@ all() { while read tag cksum file url flags ; do download_file "`source_file cksum $file url $flags`" "$url" "$cksum" "$repo" "$pkg" - done < <(grep -H '^\[D\] ' package/$repo/$pkg/$pkg.desc) + done < <(descparser package/$repo/$pkg/$pkg.desc | grep '^\[D\] ') done for each in target/*/download.txt; do @@ -761,12 +770,26 @@ packages() { while read tag cksum file url flags ; do download_file "`source_file cksum $file url $flags`" \ "$url" "$cksum" "$repo" "$pkg" - done < <(grep -H '^\[D\] ' package/$repo/$pkg/$pkg.desc) + done < <(descparser package/$repo/$pkg/$pkg.desc | grep '^\[D\] ') ;; esac done } +mapped_packages() { + if [ ! -f src/pkgmapper ] + then + mkdir -p src + bash scripts/xfind.sh package/. -type f -name 'pkgmapper.in' \ + -printf '%f\t%p\n' | sort | awk '{ $1="."; print; }' > src/pkgmapper + fi + for pkg; do + xpkg=$pkg + . src/pkgmapper + packages $pkg + done +} + # Things to do only for downloading # if [ "${1:0:5}" != "-list" -a $checkonly = 0 ]; then @@ -820,7 +843,7 @@ case "$1" in -*|"") exec $0 --help ;; - *) packages "$@" ;; + *) mapped_packages "$@" ;; esac exit 0 diff --git a/scripts/functions b/scripts/functions index 5cbd3c41a..649dd619f 100644 --- a/scripts/functions +++ b/scripts/functions @@ -640,6 +640,7 @@ build_this_package() { else # styles that include a make run if [ ! -f Makefile -a ! -f makefile -a \ -f Makefile.PL -a $runmkpl = 1 ]; then + sed -i 's/auto_install/# &/' Makefile.PL perl Makefile.PL INSTALLDIRS=perl fi #