Browse Source

Stefan Fiedler:


			
			
				rocklinux
			
			
		
Stefan Fiedler 17 years ago
parent
commit
93632209e6
7 changed files with 198 additions and 159 deletions
  1. +84
    -38
      scripts/Build-Pkg
  2. +4
    -2
      scripts/Build-Target
  3. +0
    -12
      scripts/Build-Tools
  4. +0
    -6
      scripts/config.hlp
  5. +8
    -14
      scripts/config.in
  6. +51
    -53
      scripts/functions
  7. +51
    -34
      scripts/parse-config

+ 84
- 38
scripts/Build-Pkg

@ -146,14 +146,12 @@ export ROCK_CHECK_SYSTEM_OK=1
if [ -z "$root" -a $stagelevel -le 1 ] || \ if [ -z "$root" -a $stagelevel -le 1 ] || \
[ -z "$root" -a $chroot -eq 1 ] || \ [ -z "$root" -a $chroot -eq 1 ] || \
[ "$root" = auto ]; then [ "$root" = auto ]; then
if [ $stagelevel -gt 0 ]; then root="build/$ROCKCFG_ID"
else root="build/$ROCKCFG_ID/ROCK/$toolsdir"; fi
root="build/$ROCKCFG_ID"
fi fi
[ "$pkgdir" -a "${pkgdir#/}" = "$pkgdir" ] && pkgdir="$base/$pkgdir" [ "$pkgdir" -a "${pkgdir#/}" = "$pkgdir" ] && pkgdir="$base/$pkgdir"
[ "$root" -a "${root#/}" = "$root" ] && root="$base/$root" [ "$root" -a "${root#/}" = "$root" ] && root="$base/$root"
prefix=${prefix%/} ; prefix=${prefix#/} ; root=${root%/}
xroot="$root" ; [ $stagelevel -gt 1 ] && root=""
root=${root%/} ; xroot="$root" ; [ $stagelevel -ge 3 ] && root=""
if [ -z "$id" ] ; then if [ -z "$id" ] ; then
id=`get_unique` id=`get_unique`
@ -181,6 +179,11 @@ builddir="$base/src.$xpkg.$id"
# get real pkg name for mapped packages # get real pkg name for mapped packages
. build/$ROCKCFG_ID/ROCK/$toolsdir/lib/pkgmapper . build/$ROCKCFG_ID/ROCK/$toolsdir/lib/pkgmapper
if [ $stagelevel -le 1 ] ; then
prefix="$tools"
fi
prefix=${prefix%/} ; prefix=${prefix#/}
# set desktop file name # set desktop file name
desktopfiles="$( echo ${base}/package/*/${pkg} )/*.desktop" desktopfiles="$( echo ${base}/package/*/${pkg} )/*.desktop"
@ -286,6 +289,11 @@ if [ "$chroot" = 1 ] ; then
if [ ! -f proc/mounts ]; then if [ ! -f proc/mounts ]; then
mount -t proc proc $PWD/proc mount -t proc proc $PWD/proc
fi fi
# A /dev with working PTYs is essential for make check in
# binutils and gcc.
if ! grep "$( pwd -P )/dev" /etc/mtab ; then
mount --rbind /dev $PWD/dev
fi
for x in Documentation architecture misc package scripts target; do for x in Documentation architecture misc package scripts target; do
if [ ! -e ROCK/$x ]; then ln -s "loop/$x" "ROCK/$x"; fi if [ ! -e ROCK/$x ]; then ln -s "loop/$x" "ROCK/$x"; fi
@ -403,16 +411,20 @@ mkdir -p $root/var/adm/{provides,requires,conflicts}
rm -f $root/var/adm/logs/$stagelevel-$xpkg.{out,log,err} rm -f $root/var/adm/logs/$stagelevel-$xpkg.{out,log,err}
if [ $this_is_the_2nd_run = 0 ] ; then if [ $this_is_the_2nd_run = 0 ] ; then
[ $stagelevel -gt 1 ] && . /etc/profile
options="-this_is_the_2nd_run $options $pkg=$xpkg" options="-this_is_the_2nd_run $options $pkg=$xpkg"
if [ "$ROCKCFG_CREATE_CACHE" = 1 -a $stagelevel -gt 1 ] ; then
if [ "$ROCKCFG_CREATE_CACHE" = 1 -a $stagelevel -ge 3 ] ; then
mkdir -p $root/var/adm/cache mkdir -p $root/var/adm/cache
touch $root/var/adm/cache/$xpkg touch $root/var/adm/cache/$xpkg
rm -f $root/var/adm/cache/$xpkg.tm rm -f $root/var/adm/cache/$xpkg.tm
/usr/bin/time -o "$root/var/adm/cache/$xpkg.tm" \ /usr/bin/time -o "$root/var/adm/cache/$xpkg.tm" \
-f 'buildtime=$(qcalc %U + %S)' $0 $options
-f 'buildtime=$(qcalc %U + %S)' \
env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' PATH="$PATH" \
TZ="$TZ" ROCK_BUILD_TARGET=$ROCK_BUILD_TARGET \
build_root="$build_root" build_rock="$build_rock" \
build_logs="$build_logs" build_pkgs="$build_pkgs" \
ROCK_THIS_IS_CHROOT="$ROCK_THIS_IS_CHROOT" $0 $options
returncode=$? returncode=$?
[ ! -e "$root/var/adm/cache/$xpkg.tm" ] && exit $returncode [ ! -e "$root/var/adm/cache/$xpkg.tm" ] && exit $returncode
@ -478,7 +490,11 @@ if [ $this_is_the_2nd_run = 0 ] ; then
exit $returncode exit $returncode
else else
exec $0 $options
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' PATH="$PATH" \
TZ="$TZ" ROCK_BUILD_TARGET=$ROCK_BUILD_TARGET \
build_root="$build_root" build_rock="$build_rock" \
build_logs="$build_logs" build_pkgs="$build_pkgs" \
ROCK_THIS_IS_CHROOT="$ROCK_THIS_IS_CHROOT" $0 $options
fi fi
fi fi
@ -487,7 +503,25 @@ fi
# ---- Setting Build Variables # ---- Setting Build Variables
# #
flistroot="bin boot etc lib sbin usr var opt"
dummydir="$builddir/rootdummy"
mkdir -p "$dummydir"
if [[ "$xpkg" = *-32bit ]] ; then
instroot="$dummydir"
libs_only=1
else
instroot="$root"
libs_only=0
fi
#
if [[ "$ROCKCFG_MULTILIB" = 0 || "$xpkg" = *-32bit ]] ; then
multilib="lib"
else
multilib="lib64"
fi
flistroot="bin boot etc $multilib sbin usr var opt"
flistrfilter="ldconfig\..*: .*|.*: /var/adm/.*" flistrfilter="ldconfig\..*: .*|.*: /var/adm/.*"
flistdel="var/adm/.*|var/tmp/.*|var/lock/.*|var/run/.*|etc/ld.so.cache|usr/tmp/.*|.*\\.old" flistdel="var/adm/.*|var/tmp/.*|var/lock/.*|var/run/.*|etc/ld.so.cache|usr/tmp/.*|.*\\.old"
@ -495,7 +529,7 @@ pkgsplits=""
if [ "$ROCKCFG_SPLIT_DEV" != 0 ]; then if [ "$ROCKCFG_SPLIT_DEV" != 0 ]; then
# this doesn't affect files in /lib, just /.../lib # this doesn't affect files in /lib, just /.../lib
# so there needn't be an exception for linux kernel modules # so there needn't be an exception for linux kernel modules
splitreg 40 dev '(/lib/.*\.(la|a|o)$|/include/|/man[23]/)'
splitreg 40 dev "(/(lib|$multilib)/.*\.(la|a|o)\$|/include/|/man[23]/)"
splitdesc_dev() { desc_I="$desc_I (development files)"; } splitdesc_dev() { desc_I="$desc_I (development files)"; }
fi fi
if [ "$ROCKCFG_SPLIT_DOC" != 0 ]; then if [ "$ROCKCFG_SPLIT_DOC" != 0 ]; then
@ -504,25 +538,24 @@ if [ "$ROCKCFG_SPLIT_DOC" != 0 ]; then
splitdesc_doc() { desc_I="$desc_I (documentation)"; } splitdesc_doc() { desc_I="$desc_I (documentation)"; }
fi fi
if [ $stagelevel -le 1 ]
then
makeopt='CC="$CC" CXX="$CXX" CC_FOR_BUILD="$BUILDCC"'
makeopt="$makeopt"' BUILDCC="$BUILDCC" BUILD_CC="$BUILD_CC"'
makeopt="$makeopt"' HOSTCC="$HOSTCC" HOST_CC="$HOST_CC"'
makeopt="$makeopt"' STRIP="$STRIP" AR="$AR" LD="$LD"'
makeopt="$makeopt"' RANLIB="$RANLIB" NM="$NM"'
makeopt='CC="$CC" CXX="$CXX"'
if [ $stagelevel -le 2 ] ; then
var_append makeopt ' ' 'CC_FOR_BUILD="$BUILDCC"'
var_append makeopt ' ' 'BUILDCC="$BUILDCC" BUILD_CC="$BUILD_CC"'
var_append makeopt ' ' 'HOSTCC="$HOSTCC" HOST_CC="$HOST_CC"'
var_append makeopt ' ' 'STRIP="$STRIP" AR="$AR" LD="$LD"'
var_append makeopt ' ' 'RANLIB="$RANLIB" NM="$NM"'
fi
var_append makeinstopt ' ' "$makeopt prefix=\$instroot/\$prefix install"
var_append makeopt ' ' 'prefix=/$prefix'
makeinstopt="$makeopt"' prefix=$root/$prefix install'
for x in bindir sbindir datadir includedir \
infodir mandir sysconfdir localstatedir ; do
var_append makeopt ' ' "$x=\${$x#\$instroot}"
done
for x in prefix bindir sbindir libdir datadir \
infodir mandir sysconfdir localstatedir \
includedir
do
makeopt="$makeopt $x=\${$x/${root//\//\\/}/}"
done
else
makeopt='prefix=/$prefix CC="$CC" CXX="$CXX"'
makeinstopt='prefix=/$prefix CC="$CC" CXX="$CXX" install'
if [ $stagelevel -ge 3 ] ; then
flistdel="$flistdel|`echo $base | sed s,^/,,`/.*" flistdel="$flistdel|`echo $base | sed s,^/,,`/.*"
fi fi
@ -590,29 +623,34 @@ patchfiles="`ls $confdir/*.patch $confdir/*.patch.$arch \
$targetdir/xpkg_$xpkg.patch $targetdir/xpkg_$xpkg.patch.$arch \ $targetdir/xpkg_$xpkg.patch $targetdir/xpkg_$xpkg.patch.$arch \
2>/dev/null | tr '\n' ' '`" 2>/dev/null | tr '\n' ' '`"
if [ $stagelevel -le 1 ]; then
if [ $stagelevel -le 2 ]; then
patchfiles="`ls $patchfiles $confdir/*.patch.cross \ patchfiles="`ls $patchfiles $confdir/*.patch.cross \
$confdir/*.patch.cross.$arch 2>/dev/null | tr '\n' ' '`" $confdir/*.patch.cross.$arch 2>/dev/null | tr '\n' ' '`"
fi fi
if [ $stagelevel -eq 0 ]; then
flistroot="$flistroot include share doc info man"
flistroot="$flistroot crosscc wrapper $arch_target"
if [ $stagelevel -le 1 -o "$ROCKCFG_CROSSBUILD" = 0 -a $stagelevel -eq 2 ] ; then
createdocs=0 createdocs=0
fi fi
if [ -f $confdir/$pkg.cache ]; then if [ -f $confdir/$pkg.cache ]; then
if ! egrep -q '^\[PROVIDES].*\.(so|a)( |$)' $confdir/$pkg.cache; then if ! egrep -q '^\[PROVIDES].*\.(so|a)( |$)' $confdir/$pkg.cache; then
forcefpic="0" forcefpic="0"
fi fi
fi fi
if [ $stagelevel -le 1 ] ; then
var_append flistroot " " "$tools"
flistdel="$flistdel|$tools/info/(dir|standards.info)"
else
flistdel="$flistdel|$tools(/.*|)"
fi
if [ $stagelevel -gt 1 ]; then
if [ $stagelevel -ge 3 ]; then
for pc_file in $xroot/var/adm/parse-config/* ; do for pc_file in $xroot/var/adm/parse-config/* ; do
if [ -s "$pc_file" -a "${pc_file##*/}" != "$xpkg" ] if [ -s "$pc_file" -a "${pc_file##*/}" != "$xpkg" ]
then . "$pc_file" ; fi then . "$pc_file" ; fi
done done
unset pc_file unset pc_file
fi fi
. $base/build/$ROCKCFG_ID/ROCK/$toolsdir/lib/parse-config . $base/build/$ROCKCFG_ID/ROCK/$toolsdir/lib/parse-config
set_confopt set_confopt
@ -771,6 +809,13 @@ exec 202>&1
{ {
( (
set -e set -e
set +h
echo "Build-Pkg exec $PATH"
echo -e "\n--- ENVIRONMENT Variables ---"
set | grep "^[^ ]*="
echo -e "--- ENVIRONMENT Variables ---\n"
if [ $xtrace -eq 1 -o $ROCKCFG_XTRACE -eq 1 ] ; then if [ $xtrace -eq 1 -o $ROCKCFG_XTRACE -eq 1 ] ; then
PS4=$'=[$FUNCNAME:$LINENO (last \\\$?=$?)> ' PS4=$'=[$FUNCNAME:$LINENO (last \\\$?=$?)> '
@ -837,7 +882,7 @@ exec 202>&1
cat > "$builddir/debug_x.sh" <<- EOT cat > "$builddir/debug_x.sh" <<- EOT
#!/bin/bash #!/bin/bash
export PROMPT_COMMAND='. debug.buildenv; cd .; unset PROMPT_COMMAND' export PROMPT_COMMAND='. debug.buildenv; cd .; unset PROMPT_COMMAND'
cd "$builddir"; exec bash 200>> build.pid
cd "$builddir" ; exec env -i bash --init-file debug.buildenv 200>> build.pid
EOT EOT
# #
if [ "$ROCK_THIS_IS_CHROOT" != 1 ]; then if [ "$ROCK_THIS_IS_CHROOT" != 1 ]; then
@ -898,9 +943,10 @@ exec 202>&1
fi fi
if [ "$ROCKCFG_FLIST" = "flwrapper" -o \ if [ "$ROCKCFG_FLIST" = "flwrapper" -o \
"$ROCKCFG_FLIST" = "strace" ] ; then "$ROCKCFG_FLIST" = "strace" ] ; then
if [ "$stagelevel" -le 1 ]
if [ "$stagelevel" -le 2 ]
then then
xbase="$( cd $xroot/ 2> /dev/null ; pwd -P )" xbase="$( cd $xroot/ 2> /dev/null ; pwd -P )"
if cat $builddir/fl_wrapper.wlog | sed 's,//*,/,g' | \ if cat $builddir/fl_wrapper.wlog | sed 's,//*,/,g' | \
egrep -qv "[ ]($base|$xbase|$builddir|/tmp|/usr/tmp|/var/tmp|/var/backups|/proc|/dev)(/|$)" egrep -qv "[ ]($base|$xbase|$builddir|/tmp|/usr/tmp|/var/tmp|/var/backups|/proc|/dev)(/|$)"
then then
@ -962,7 +1008,7 @@ exec 202>&1
splitapply $xpkg "$builddir/flist.split" splitapply $xpkg "$builddir/flist.split"
if [ "$ROCKCFG_FLIST" = "flwrapper" -o \ if [ "$ROCKCFG_FLIST" = "flwrapper" -o \
"$ROCKCFG_FLIST" = "strace" ] && [ $stagelevel -gt 1 ] ; then
"$ROCKCFG_FLIST" = "strace" ] && [ $stagelevel -ge 3 ] ; then
echo "Calculating build-time package dependencies ..." echo "Calculating build-time package dependencies ..."
! egrep -v "^($flistrfilter)\$" "$builddir"/fl_wrapper.[rw]log | ! egrep -v "^($flistrfilter)\$" "$builddir"/fl_wrapper.[rw]log |
@ -1203,14 +1249,14 @@ EOT
done < "$builddir/files.lst" done < "$builddir/files.lst"
fi fi
if [ $stagelevel -ge 2 -a $nopostinst = 0 -a -d /var/adm/postinstall ]; then
if [ $stagelevel -ge 3 -a $nopostinst = 0 -a -d /var/adm/postinstall ]; then
cp var/adm/flists/$spkg "$(mktemp var/adm/postinstall/${spkg}-install.XXXXXX)" cp var/adm/flists/$spkg "$(mktemp var/adm/postinstall/${spkg}-install.XXXXXX)"
fi fi
) )
done done
echo "Making post-install adaptions." echo "Making post-install adaptions."
if [ $stagelevel -ge 2 -a -f /sbin/ldconfig ] ; then ldconfig ; fi
if [ $stagelevel -ge 3 -a -f /sbin/ldconfig ] ; then ldconfig ; fi
if [ "$ROCKCFG_PARANOIA_CHECK" = 1 ] ; then if [ "$ROCKCFG_PARANOIA_CHECK" = 1 ] ; then
found_errors=0 found_errors=0

+ 4
- 2
scripts/Build-Target

@ -29,7 +29,7 @@
# for distribution. # for distribution.
# #
# This script is the ROCK work-horse. It builds in a chroot environment # This script is the ROCK work-horse. It builds in a chroot environment
# (stage 2..9) and goes through a number of build stages:
# (stage 3..9) and goes through a number of build stages:
# #
config=default config=default
@ -332,7 +332,7 @@ pkgloop_package() {
pkg_laststage=$(echo "$pkg_stages" | sed "s,-,,g; s,.*\(.\),\1,") pkg_laststage=$(echo "$pkg_stages" | sed "s,-,,g; s,.*\(.\),\1,")
cmd_root="-root auto" cmd_root="-root auto"
[ $stagelevel -gt 1 ] && cmd_root="$cmd_root -chroot"
[ $stagelevel -ge 3 ] && cmd_root="$cmd_root -chroot"
cmd_buildpkg="./scripts/Build-Pkg -$stagelevel -cfg $config -nopostinst" cmd_buildpkg="./scripts/Build-Pkg -$stagelevel -cfg $config -nopostinst"
cmd_buildpkg="$cmd_buildpkg $cmd_root $pkg_basename=$pkg_name" cmd_buildpkg="$cmd_buildpkg $cmd_root $pkg_basename=$pkg_name"
@ -464,6 +464,8 @@ build_target_exit() {
umount -d -f -l $build_rock/{loop,config,download} 2> /dev/null umount -d -f -l $build_rock/{loop,config,download} 2> /dev/null
umount -d -f $build_root/proc 2> /dev/null umount -d -f $build_root/proc 2> /dev/null
umount -d -f -l $build_root/proc 2> /dev/null umount -d -f -l $build_root/proc 2> /dev/null
umount -d -f $build_root/dev 2> /dev/null
umount -d -f -l $build_root/dev 2> /dev/null
echo_status "READY." echo_status "READY."
echo echo

+ 0
- 12
scripts/Build-Tools

@ -53,18 +53,6 @@ mkdir -p build/$ROCKCFG_ID/ROCK/$toolsdir/bin
mkdir -p build/$ROCKCFG_ID/ROCK/$toolsdir/wrapper mkdir -p build/$ROCKCFG_ID/ROCK/$toolsdir/wrapper
mkdir -p build/$ROCKCFG_ID/ROCK/$toolsdir/lib mkdir -p build/$ROCKCFG_ID/ROCK/$toolsdir/lib
if [ $toolsdir = tools.cross ]; then
mkdir -p build/$ROCKCFG_ID/ROCK/$toolsdir/{var/adm,etc,share,include}
[ -L build/$ROCKCFG_ID/ROCK/$toolsdir/usr ] ||
ln -s . build/$ROCKCFG_ID/ROCK/$toolsdir/usr
[ -L build/$ROCKCFG_ID/ROCK/$toolsdir/sbin ] ||
ln -s bin build/$ROCKCFG_ID/ROCK/$toolsdir/sbin
[ -L build/$ROCKCFG_ID/ROCK/$toolsdir/var/adm/logs ] ||
ln -s ../../../../var/adm/logs \
build/$ROCKCFG_ID/ROCK/$toolsdir/var/adm/logs
mkdir -p build/$ROCKCFG_ID/var/adm/logs
fi
x="$( bash scripts/xfind.sh config/$config/. package/. scripts/. \ x="$( bash scripts/xfind.sh config/$config/. package/. scripts/. \
misc/. architecture/. target/. ! -name '*.cache' \ misc/. architecture/. target/. ! -name '*.cache' \
-newer build/$ROCKCFG_ID/ROCK/$toolsdir/.lastupdate \ -newer build/$ROCKCFG_ID/ROCK/$toolsdir/.lastupdate \

+ 0
- 6
scripts/config.hlp

@ -323,12 +323,6 @@ ROCKCFG_FLIST
or modify files while the build is running. This should only be used or modify files while the build is running. This should only be used
if no other system for creating the file list can be used. if no other system for creating the file list can be used.
ROCKCFG_USE_CROSSCC
This option controls whether to use a pseudo-cross compiler even
for native (non-cross) builds. This is needed when the host and
target gcc or glibc differ in the ABI.
THIS IS STRONGLY RECOMMENDED!
ROCKCFG_DO_REBUILD_STAGE ROCKCFG_DO_REBUILD_STAGE
This options controls whether to rebuild all packages in the final This options controls whether to rebuild all packages in the final
rebuild stage. rebuild stage.

+ 8
- 14
scripts/config.in

@ -97,8 +97,6 @@ block_begin 7
size 'Hard optimise for size (recommended)' \ size 'Hard optimise for size (recommended)' \
lazy 'Lazy optimisation (for debugging binaries)' \ lazy 'Lazy optimisation (for debugging binaries)' \
test 'Only optimize toolchain (for fast builds)' test 'Only optimize toolchain (for fast builds)'
bool 'Build and use a (pseudo-)cross compiler' ROCKCFG_USE_CROSSCC 1
expert_end expert_end
bool 'This is a cross-build between architectures' ROCKCFG_CROSSBUILD 0 bool 'This is a cross-build between architectures' ROCKCFG_CROSSBUILD 0
if [ "$ROCKCFG_CROSSBUILD" = 1 ] ; then if [ "$ROCKCFG_CROSSBUILD" = 1 ] ; then
@ -110,7 +108,6 @@ block_begin 7
comment '-- might cause damage on your build system if it is not read-only. So' comment '-- might cause damage on your build system if it is not read-only. So'
comment '-- only run this if your /{bin,lib,usr,..} is somehow write-protected.' comment '-- only run this if your /{bin,lib,usr,..} is somehow write-protected.'
fi fi
ROCKCFGSET_USE_CROSSCC=1
const ROCKCFG_PSEUDONATIVE 0 const ROCKCFG_PSEUDONATIVE 0
block_end block_end
else else
@ -123,8 +120,6 @@ block_begin 7
ROCKCFG_PSEUDONATIVE_NATIVEHOST '' ROCKCFG_PSEUDONATIVE_NATIVEHOST ''
text 'NFSROOT to be mounted on native host' \ text 'NFSROOT to be mounted on native host' \
ROCKCFG_PSEUDONATIVE_NFSROOT "$HOSTNAME:$PWD" ROCKCFG_PSEUDONATIVE_NFSROOT "$HOSTNAME:$PWD"
ROCKCFGSET_USE_CROSSCC=1
fi fi
fi fi
block_end block_end
@ -288,26 +283,25 @@ include target/$ROCKCFG_TARGET/postconfig.in
filterscript="" filterscript=""
if [ "$ROCKCFG_CROSSBUILD" = 1 ] ; then if [ "$ROCKCFG_CROSSBUILD" = 1 ] ; then
var_append filterscript ' ' 's,^\(. ..\)[^ ]*,\1--------, ;'
var_append filterscript ' ' 's,^\(. ...\)[^ ]*,\1-------, ;'
var_append filterscript ' ' 's,^\(. .\)?,\1-, ;'
if [ $ROCKCFG_CROSS_TESTALL = 1 ]; then if [ $ROCKCFG_CROSS_TESTALL = 1 ]; then
var_append filterscript ' ' 's,^\(. .\)?,\11, ;'
var_append filterscript ' ' 's,^\(. ..\)?,\12, ;'
else else
var_append filterscript ' ' 's,^\(. .\)?,\1-, ;'
var_append filterscript ' ' 's,^\(. ..\)?,\1-, ;'
fi fi
var_append filterscript ' ' 's,^\(. .\)X,\11, ; s,^\(. \)X,\1-, ;'
var_append filterscript ' ' 's,^\(. .\)X,\11, ; s,^\(. \)X,\1-, ; s,^\(. ..\)X,\12, ;'
else else
var_append filterscript ' ' 's,^\(. .\)[?X],\1-, ;'
var_append filterscript ' ' 's,^\(. .\)[?X],\1-, ; s,^\(. ..\)[?X],\1-, ;'
if [ "$ROCKCFG_PSEUDONATIVE" = 1 ] ; then if [ "$ROCKCFG_PSEUDONATIVE" = 1 ] ; then
var_append filterscript ' ' 's,^\(. \)X,\10, ;' var_append filterscript ' ' 's,^\(. \)X,\10, ;'
else else
var_append filterscript ' ' 's,^\(. \)X,\1-, ;' var_append filterscript ' ' 's,^\(. \)X,\1-, ;'
fi fi
fi fi
if [ $ROCKCFG_USE_CROSSCC != 1 ]; then
var_append filterscript ' ' 's,^\([XO] \)0,\1-, ;'
if [ "$ROCKCFG_MULTILIB" = 1 ] ; then
var_append filterscript ' ' '/ MULTILIB / { h ; s,\(\( [^ ]*\)\{3\}\) \([^ ]*\),\1 \3=\3-32bit, ; G } ;'
fi fi
if [ $ROCKCFG_DO_REBUILD_STAGE != 1 ]; then if [ $ROCKCFG_DO_REBUILD_STAGE != 1 ]; then
var_append filterscript ' ' 's,^\([XO] [^ ]*\)9 ,\1- , ;' var_append filterscript ' ' 's,^\([XO] [^ ]*\)9 ,\1- , ;'
fi fi

+ 51
- 53
scripts/functions

@ -179,68 +179,78 @@ column_clean_tab() {
# Re-run it in the package .conf file if you modify $prefix # Re-run it in the package .conf file if you modify $prefix
# #
set_confopt() { set_confopt() {
confopt="--prefix=$root/$prefix"
bindir="$root/$prefix/bin"
confopt="$confopt --bindir=\$bindir"
sbindir="$root/$prefix/sbin"
confopt="$confopt --sbindir=\$sbindir"
libdir="$root/$prefix/lib"
confopt="$confopt --libdir=\$libdir"
confopt="--prefix=$instroot/$prefix"
bindir="$instroot/$prefix/bin"
sbindir="$instroot/$prefix/sbin"
if [ -z "$prefix" ]; then if [ -z "$prefix" ]; then
datadir="$root/usr/share"
includedir="$root/usr/include"
datadir="$instroot/usr/share"
includedir="$instroot/usr/include"
docdir="$instroot/usr/share/doc/$xpkg"
infodir="$instroot/usr/share/info"
mandir="$instroot/usr/share/man"
docdir="$root/usr/share/doc/$xpkg"
infodir="$root/usr/share/info"
mandir="$root/usr/share/man"
else else
datadir="$root/$prefix/share"
includedir="$root/$prefix/include"
datadir="$instroot/$prefix/share"
includedir="$instroot/$prefix/include"
docdir="$root/$prefix/share/doc/$xpkg"
infodir="$root/$prefix/share/info"
mandir="$root/$prefix/share/man"
docdir="$instroot/$prefix/share/doc/$xpkg"
infodir="$instroot/$prefix/share/info"
mandir="$instroot/$prefix/share/man"
fi fi
confopt="$confopt --datadir=\$datadir"
confopt="$confopt --includedir=\$includedir"
confopt="$confopt --infodir=\$infodir"
confopt="$confopt --mandir=\$mandir"
if [ "${prefix#opt/}" != "$prefix" ] ; then if [ "${prefix#opt/}" != "$prefix" ] ; then
sysconfdir="$root/etc/$prefix"
localstatedir="$root/var/$prefix"
sysconfdir="$instroot/etc/$prefix"
localstatedir="$instroot/var/$prefix"
elif [ "${prefix#usr}" != "$prefix" ] ; then elif [ "${prefix#usr}" != "$prefix" ] ; then
sysconfdir="$root/etc"
localstatedir="$root/var"
sysconfdir="$instroot/etc"
localstatedir="$instroot/var"
else else
sysconfdir="$root/$prefix/etc"
localstatedir="$root/$prefix/var"
sysconfdir="$instroot/$prefix/etc"
localstatedir="$instroot/$prefix/var"
fi fi
confopt="$confopt --sysconfdir=\$sysconfdir"
confopt="$confopt --localstatedir=\$localstatedir"
libdir="$root/$prefix/$multilib"
var_append confopt ' ' '--bindir=$bindir'
var_append confopt ' ' '--sbindir=$sbindir'
var_append confopt ' ' '--datadir=$datadir'
var_append confopt ' ' '--includedir=$includedir'
var_append confopt ' ' '--infodir=$infodir'
var_append confopt ' ' '--mandir=$mandir'
var_append confopt ' ' '--sysconfdir=$sysconfdir'
var_append confopt ' ' '--localstatedir=$localstatedir'
var_append confopt ' ' '--libdir=$libdir'
if [ "$ROCKCFG_CONFIGURE_OPTS" ] ; then if [ "$ROCKCFG_CONFIGURE_OPTS" ] ; then
confopt="$confopt $ROCKCFG_CONFIGURE_OPTS"
var_append confopt ' ' "$ROCKCFG_CONFIGURE_OPTS"
fi fi
if [ "$ROCKCFG_DEBUG" = 0 ] ; then if [ "$ROCKCFG_DEBUG" = 0 ] ; then
confopt="$confopt --disable-debug"
var_append confopt ' ' '--disable-debug'
fi fi
if [ "$stagelevel" -le 1 -o "$ROCKCFG_DISABLE_NLS" = 1 ] ; then if [ "$stagelevel" -le 1 -o "$ROCKCFG_DISABLE_NLS" = 1 ] ; then
confopt="${confopt//--enable-nls/} --disable-nls" confopt="${confopt//--enable-nls/} --disable-nls"
fi fi
confopt="$confopt \$extraconfopt"
var_append confopt ' ' '$extraconfopt'
if [ "$stagelevel" -eq 0 ]; then if [ "$stagelevel" -eq 0 ]; then
confopt="$confopt --target=\$arch_target --host=\$arch_build"
var_append confopt ' ' "--host=$arch_build --target=$arch_target"
else else
confopt="$confopt --build=\$arch_build --host=\$arch_target"
var_append confopt ' ' "--build=$arch_build"
if [[ "$ROCKCFG_MULTILIB" = 1 && "$xpkg" = *-32bit ]] ; then
var_append confopt ' ' "--host=$arch_target32"
else
var_append confopt ' ' "--host=$arch_target"
fi
fi fi
cmakedefs="-DCMAKE_INSTALL_PREFIX=/${prefix}" cmakedefs="-DCMAKE_INSTALL_PREFIX=/${prefix}"
@ -279,7 +289,7 @@ function eval_config_command() {
autoconf autoconf
fi fi
fi fi
if [ $stagelevel -le 1 ] ; then
if [ $stagelevel -le 2 ] ; then
create_config_cache >> config.cache create_config_cache >> config.cache
grep -q '.--cache-file=' $configscript && grep -q '.--cache-file=' $configscript &&
set -- "$@" "--cache-file=config.cache" set -- "$@" "--cache-file=config.cache"
@ -455,7 +465,7 @@ create_config_cache() {
[ $arch_sizeof_char_p -eq $arch_sizeof_long_long ] && pt="long long" [ $arch_sizeof_char_p -eq $arch_sizeof_long_long ] && pt="long long"
[ -n "$pt" ] && echo "db_cv_alignp_t=\"unsigned $pt\"" [ -n "$pt" ] && echo "db_cv_alignp_t=\"unsigned $pt\""
echo "ac_cv_prog_CC=$CC"
echo "ac_cv_prog_CC='$CC'"
} }
# Abort build before actual build starts # Abort build before actual build starts
@ -528,11 +538,7 @@ dump_env() {
pkginstalled() { pkginstalled() {
local pattern="$1" ; pattern="${pattern//+/\\+}" local pattern="$1" ; pattern="${pattern//+/\\+}"
if [ $stagelevel = 0 ] ; then
ls "$base/build/$ROCKCFG_ID/ROCK/$toolsdir/var/adm/flists" | egrep -q "^($pattern)$"
else
ls $root/var/adm/flists | egrep -q "^($pattern)$"
fi
ls $root/var/adm/flists | egrep -q "^($pattern)$"
} }
# Register a window-manager # Register a window-manager
@ -727,14 +733,6 @@ build_this_package() {
rmemptydir="$x $rmemptydir" rmemptydir="$x $rmemptydir"
fi fi
done done
if [ ! -e $root/$prefix/man ]; then
ln -s ${mandir#$root} $root/$prefix/man
rmemptydir="$rmemptydir $root/$prefix/man"
fi
if [ ! -e $root/$prefix/info ]; then
ln -s ${infodir#$root} $root/$prefix/info
rmemptydir="$rmemptydir $root/$prefix/info"
fi
fi fi
if [ ".$custmain" = "." ] if [ ".$custmain" = "." ]

+ 51
- 34
scripts/parse-config

@ -1,3 +1,4 @@
#!/bin/bash
# #
# --- ROCK-COPYRIGHT-NOTE-BEGIN --- # --- ROCK-COPYRIGHT-NOTE-BEGIN ---
# #
@ -32,6 +33,7 @@ crossnative=native ; stagelevel=${stagelevel:-1} ; arch=any
arch_sizeof_long_long=undef ; arch_sizeof_int=undef ; arch_machine=undef arch_sizeof_long_long=undef ; arch_sizeof_int=undef ; arch_machine=undef
arch_sizeof_char_p=undef ; arch_sizeof_long=undef ; arch_bigendian=undef arch_sizeof_char_p=undef ; arch_sizeof_long=undef ; arch_bigendian=undef
arch_sizeof_short=undef ; arch_target=any-unknown-linux arch_sizeof_short=undef ; arch_target=any-unknown-linux
arch_target32= ; arch_target64=
if [ -f config/$config/config ] if [ -f config/$config/config ]
then then
@ -60,13 +62,30 @@ if [ -f "architecture/$arch/archtest.out" ]
if [ -f "architecture/$arch/archtest.sh" ] if [ -f "architecture/$arch/archtest.sh" ]
then . "architecture/$arch/archtest.sh" ; fi then . "architecture/$arch/archtest.sh" ; fi
if [ "$stagelevel" -ge 3 ]
then
if [ -f $base/build/$ROCKCFG_ID/ROCK/$toolsdir/lib/parse-config-fixarch ]
then . $base/build/$ROCKCFG_ID/ROCK/$toolsdir/lib/parse-config-fixarch ; fi
arch_build="$arch_target" ; archprefix=""
else
arch_build="`uname -m`-nocross-linux-gnu"
if [ -f $base/build/$ROCKCFG_ID/ROCK/$toolsdir/lib/parse-config-fixarch ]
then . $base/build/$ROCKCFG_ID/ROCK/$toolsdir/lib/parse-config-fixarch ; fi
if [ $stagelevel -eq 2 ]; then
archprefix="${arch_target}-"
fi
fi
base=$(pwd -P) base=$(pwd -P)
if [ "$ROCK_THIS_IS_CHROOT" = 1 ] if [ "$ROCK_THIS_IS_CHROOT" = 1 ]
then then
toolsdir=tools.chroot toolsdir=tools.chroot
else else
if [ $stagelevel -le 1 -a "$ROCKCFG_USE_CROSSCC" = 1 ]
if [ "$ROCKCFG_CROSSBUILD" == 1 ]
then then
toolsdir=tools.cross toolsdir=tools.cross
else else
@ -74,6 +93,8 @@ else
fi fi
fi fi
[ $stagelevel -ge 3 ] && . /etc/profile
new_path="" new_path=""
for x in ${PATH//:/ }; do for x in ${PATH//:/ }; do
if [ -d "$x" -a -z "${x##/*}" -a -n "${x##$base/*}" -a \ if [ -d "$x" -a -z "${x##/*}" -a -n "${x##$base/*}" -a \
@ -84,16 +105,36 @@ done
export PATH="${new_path#:}" export PATH="${new_path#:}"
unset new_path unset new_path
if [ $stagelevel -le 1 -a "$ROCKCFG_USE_CROSSCC" = 1 ] ; then
export PATH="$base/build/$ROCKCFG_ID/ROCK/$toolsdir/crosscc:$PATH"
if [ $stagelevel -le 2 ] ; then
export LFS="$base/build/$ROCKCFG_ID"
else
export LFS=""
fi
export CLFS="$LFS"
if [ "$ROCKCFG_CROSSBUILD" == 0 ] ; then
tools=ROCK/tools.native
else
tools=ROCK/tools.cross
fi
cross_tools="$tools"
if [ $stagelevel -le 2 ] ; then
export PATH="$LFS/$tools/bin:/bin:/usr/bin:/sbin:/usr/sbin"
fi fi
export CLFS_HOST="$arch_build"
export CLFS_TARGET="$arch_target" CLFS_TARGET32="$arch_target32"
export PATH="$base/build/$ROCKCFG_ID/ROCK/$toolsdir/bin:$PATH" export PATH="$base/build/$ROCKCFG_ID/ROCK/$toolsdir/bin:$PATH"
export PATH="$base/build/$ROCKCFG_ID/ROCK/$toolsdir/wrapper:$PATH" export PATH="$base/build/$ROCKCFG_ID/ROCK/$toolsdir/wrapper:$PATH"
unset LANG ${!LC_*}; export LC_ALL=C; umask 022
export BUILDCC="cc" BUILD_CC="cc" HOSTCC="cc" HOST_CC="cc"
export BUILDCXX="c++" BUILD_CXX="c++" HOSTCXX="c++" HOST_CXX="c++"
export LC_ALL=C; umask 022
# export BUILDCC="cc" BUILD_CC="cc" HOSTCC="cc" HOST_CC="cc"
# export BUILDCXX="c++" BUILD_CXX="c++" HOSTCXX="c++" HOST_CXX="c++"
export BUILDCC="gcc" BUILD_CC="gcc" HOSTCC="gcc" HOST_CC="gcc"
export BUILDCXX="g++" BUILD_CXX="g++" HOSTCXX="g++" HOST_CXX="g++"
export BUILD32="-m32" BUILD64="-m64"
if [ "$ROCKCFG_LINGUAS" == "all" ] ; then if [ "$ROCKCFG_LINGUAS" == "all" ] ; then
unset LINGUAS unset LINGUAS
@ -103,13 +144,9 @@ else
export LINGUAS="$ROCKCFG_LINGUAS" export LINGUAS="$ROCKCFG_LINGUAS"
fi fi
unset CPP ARFLAGS ASFLAGS CFLAGS CXXFLAGS CPPFLAGS FFLAGS LDFLAGS
unset LD_LIBRARY_PATH LD_PRELOAD FLWRAPPER C_INCLUDE_PATH CONFIG_SITE
unset DISPLAY BASH_ENV CDPATH GLOBIGNORE IFS MAIL MAILPATH
unset POSIXLY_CORRECT PROMPT_COMMAND TIMEFORMAT TMOUT
IFS=$' \t\n' IFS=$' \t\n'
set +o posix set +o posix
set +h
export STRIP_WRAPPER_MYPATH="$base/build/$ROCKCFG_ID/ROCK/$toolsdir/wrapper" export STRIP_WRAPPER_MYPATH="$base/build/$ROCKCFG_ID/ROCK/$toolsdir/wrapper"
export STRIP_WRAPPER_NOLOOP=0 export STRIP_WRAPPER_NOLOOP=0
@ -126,27 +163,8 @@ export CMD_WRAPPER_NOLOOP=0 ; unset CMD_WRAPPER_OTHERS_TMP
if [ -f $base/build/$ROCKCFG_ID/ROCK/$toolsdir/lib/wrapper-config ] if [ -f $base/build/$ROCKCFG_ID/ROCK/$toolsdir/lib/wrapper-config ]
then . $base/build/$ROCKCFG_ID/ROCK/$toolsdir/lib/wrapper-config ; fi then . $base/build/$ROCKCFG_ID/ROCK/$toolsdir/lib/wrapper-config ; fi
if [ "$stagelevel" -gt 1 -o "$ROCKCFG_USE_CROSSCC" = 0 ]
then
if [ -f $base/build/$ROCKCFG_ID/ROCK/$toolsdir/lib/parse-config-fixarch ]
then . $base/build/$ROCKCFG_ID/ROCK/$toolsdir/lib/parse-config-fixarch ; fi
arch_build="$arch_target" ; archprefix=""
else
arch_build="`uname -m`-nocross-linux-gnu"
if [ -f $base/build/$ROCKCFG_ID/ROCK/$toolsdir/lib/parse-config-fixarch ]
then . $base/build/$ROCKCFG_ID/ROCK/$toolsdir/lib/parse-config-fixarch ; fi
if [ $stagelevel -eq 1 ]; then
archprefix="${arch_target}-"
if [ ! -f "$base/build/$ROCKCFG_ID/ROCK/$toolsdir/`
`crosscc/${archprefix}gcc" ]
then archprefix="Cross_CC_not_built_so_far_" ; fi
fi
fi
export CC="${archprefix}cc" CXX="${archprefix}c++"
# export CC="${archprefix}cc" CXX="${archprefix}c++"
export CC="${archprefix}gcc" CXX="${archprefix}g++"
export AS="${archprefix}as" STRIP="${archprefix}strip" export AS="${archprefix}as" STRIP="${archprefix}strip"
export LD="${archprefix}ld" GASP="${archprefix}gasp" export LD="${archprefix}ld" GASP="${archprefix}gasp"
export AR="${archprefix}ar" RANLIB="${archprefix}ranlib" export AR="${archprefix}ar" RANLIB="${archprefix}ranlib"
@ -154,7 +172,7 @@ export NM="${archprefix}nm" KCC="${archprefix}kcc"
export F77="${archprefix}f77" MAKE="make" export F77="${archprefix}f77" MAKE="make"
export AWK="gawk" SED="sed" export AWK="gawk" SED="sed"
if [ $stagelevel -le 1 -a "$ROCKCFG_PSEUDONATIVE" = 1 ]; then
if [ $stagelevel -le 2 -a "$ROCKCFG_PSEUDONATIVE" = 1 ]; then
export BUILDCC="$BUILDCC -static" BUILDLD="$BUILDLD -static" export BUILDCC="$BUILDCC -static" BUILDLD="$BUILDLD -static"
fi fi
@ -162,4 +180,3 @@ if [ -f /etc/ROCK-PROFILE ]; then
# this is the right place for e.g. build process ulimits # this is the right place for e.g. build process ulimits
. /etc/ROCK-PROFILE . /etc/ROCK-PROFILE
fi fi

Loading…
Cancel
Save