SLOGAN="www.ipfire.eu" # Software slogan
CONFIG_ROOT=/var/ipfire # Configuration rootdir
NICE=10 # Nice level
-MAX_RETRIES=3 # prefetch/check loop
+MAX_RETRIES=1 # prefetch/check loop
KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'`
MACHINE=`uname -m`
SVN_REVISION=`svn info | grep Revision | cut -c 11-`
# Resetting our nice level #
# #
############################################################################
- echo -ne "`date -u '+%b %e %T'`: Resetting our nice level to $NICE" | tee -a $LOGFILE
+ echo -ne "Resetting our nice level to $NICE" | tee -a $LOGFILE
renice $NICE $$ > /dev/null
if [ `nice` != "$NICE" ]; then
beautify message FAIL
# Checking if running as root user #
# #
############################################################################
- echo -ne "`date -u '+%b %e %T'`: Checking if we're running as root user" | tee -a $LOGFILE
+ echo -ne "Checking if we're running as root user" | tee -a $LOGFILE
if [ `id -u` != 0 ]; then
beautify message FAIL
exiterror "Not building as root"
# Checking for necessary temporary space #
# #
############################################################################
- echo -ne "`date -u '+%b %e %T'`: Checking for necessary space on disk $BASE_DEV" | tee -a $LOGFILE
+ echo -ne "Checking for necessary space on disk $BASE_DEV" | tee -a $LOGFILE
BASE_DEV=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $1 }'`
BASE_ASPACE=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $4 }'`
if (( 2202000 > $BASE_ASPACE )); then
# Building Linux From Scratch system #
# #
############################################################################
- echo "`date -u '+%b %e %T'`: Building Linux From Scratch system" | tee -a $LOGFILE
-
# Set umask
umask 022
# Make some extra directories
mkdir -p $BASEDIR/build/{tools,etc,usr/src} 2>/dev/null
+ mkdir -p $BASEDIR/build/{dev/{shm,pts},proc,sys}
mkdir -p $BASEDIR/{cache,ccache} 2>/dev/null
- mkdir -p $BASEDIR/build/dev/pts $BASEDIR/build/proc $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache}
+ mkdir -p $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache}
+
+ mknod -m 600 $BASEDIR/build/dev/console c 5 1 2>/dev/null
+ mknod -m 666 $BASEDIR/build/dev/null c 1 3 2>/dev/null
# Make all sources and proc available under lfs build
+ mount --bind /dev $BASEDIR/build/dev
mount --bind /dev/pts $BASEDIR/build/dev/pts
+ mount --bind /dev/shm $BASEDIR/build/dev/shm
mount --bind /proc $BASEDIR/build/proc
+ mount --bind /sys $BASEDIR/build/sys
mount --bind $BASEDIR/cache $BASEDIR/build/usr/src/cache
mount --bind $BASEDIR/ccache $BASEDIR/build/usr/src/ccache
mount --bind $BASEDIR/config $BASEDIR/build/usr/src/config
mount --bind $BASEDIR/log $BASEDIR/build/usr/src/log
mount --bind $BASEDIR/src $BASEDIR/build/usr/src/src
+ # This is a temporary hack!!!
+ cp -f /bin/hostname /tools/bin/hostname 2>/dev/null
+
# Run LFS static binary creation scripts one by one
export CCACHE_DIR=$BASEDIR/ccache
export CCACHE_HASHDIR=1
export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH
lfsmake1 linux-libc-header
lfsmake1 glibc
+ lfsmake1 cleanup-toolchain PASS=1
lfsmake1 tcl
lfsmake1 expect
lfsmake1 dejagnu
lfsmake1 tar
lfsmake1 texinfo
lfsmake1 util-linux
- lfsmake1 cleanup-toolchain
+ lfsmake1 cleanup-toolchain PASS=2
export PATH=$ORG_PATH
}
LOGFILE="$BASEDIR/log/_build.base.log"
export LOGFILE
lfsmake2 stage2
- lfsmake2 makedev
- lfsmake2 linux
+# lfsmake2 makedev
+ lfsmake2 linux-libc-header
lfsmake2 man-pages
lfsmake2 glibc
+ lfsmake2 cleanup-toolchain PASS=3
lfsmake2 binutils
lfsmake2 gcc
+ lfsmake2 berkeley
lfsmake2 coreutils
- lfsmake2 zlib
- lfsmake2 mktemp
lfsmake2 iana-etc
- lfsmake2 findutils
- lfsmake2 gawk
- lfsmake2 ncurses
- lfsmake2 vim
lfsmake2 m4
lfsmake2 bison
- lfsmake2 less
- lfsmake2 groff
+ lfsmake2 ncurses
+ lfsmake2 procps
lfsmake2 sed
- lfsmake2 flex
- lfsmake2 gettext
- lfsmake2 net-tools
- lfsmake2 inetutils
+ lfsmake2 libtool
lfsmake2 perl
- lfsmake2 texinfo
+ lfsmake2 readline
+ lfsmake2 zlib
lfsmake2 autoconf
lfsmake2 automake
lfsmake2 bash
- lfsmake2 file
- lfsmake2 libtool
lfsmake2 bzip2
lfsmake2 diffutils
- lfsmake2 ed
- lfsmake2 kbd
lfsmake2 e2fsprogs
- lfsmake2 grep
+ lfsmake2 file
+ lfsmake2 findutils
+ lfsmake2 flex
lfsmake2 grub
+ lfsmake2 gawk
+ lfsmake2 gettext
+ lfsmake2 grep
+ lfsmake2 groff
lfsmake2 gzip
- lfsmake2 man
+ lfsmake2 inetutils
+ lfsmake2 iproute2
+ lfsmake2 kbd
+ lfsmake2 less
lfsmake2 make
+ lfsmake2 man
+ lfsmake2 mktemp
lfsmake2 modutils
lfsmake2 patch
- lfsmake2 procinfo
- lfsmake2 procps
lfsmake2 psmisc
lfsmake2 shadow
lfsmake2 sysklogd
lfsmake2 sysvinit
lfsmake2 tar
+ lfsmake2 texinfo
+ lfsmake2 udev
lfsmake2 util-linux
+ lfsmake2 vim
+####
+# lfsmake2 net-tools
+# lfsmake2 inetutils
+# lfsmake2 ed
+# lfsmake2 procinfo
}
buildipfire() {
# See what we're supposed to do
case "$1" in
build)
+ clear
BUILDMACHINE=`uname -m`
PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
#only restore on a clean disk
- if [ ! -f log/cleanup-toolchain-tools ]; then
+ if [ ! -f log/cleanup-toolchain-2-tools ]; then
if [ ! -n "$PACKAGE" ]; then
beautify build_stage "Full toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`"
prepareenv
fi
fi
else
- echo "`date -u '+%b %e %T'`: Using installed toolchain" | tee -a $LOGFILE
+ echo -n "Using installed toolchain" | tee -a $LOGFILE
+ beautify message SKIP
prepareenv
fi
mkdir $BASEDIR/cache
fi
mkdir -p $BASEDIR/log
- echo "`date -u '+%b %e %T'`:Preload all source files" | tee -a $LOGFILE
+ echo -e "${BOLD}Preload all source files${NORMAL}" | tee -a $LOGFILE
FINISHED=0
cd $BASEDIR/lfs
for c in `seq $MAX_RETRIES`; do
cd $BASEDIR/lfs
for i in *; do
if [ -f "$i" -a "$i" != "Config" ]; then
+ echo -ne "Loading $i"
make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
if [ $? -ne 0 ]; then
- echo "Prefetch : wget error in lfs/$i"
+ beautify message FAIL
FINISHED=0
else
if [ $c -eq 1 ]; then
- echo "Prefetch : lfs/$i files loaded"
+ beautify message DONE
fi
fi
fi
done
done
- echo "Prefetch : verifying md5sum"
+ echo -e "${BOLD}***Verifying md5sums${NORMAL}"
ERROR=0
for i in *; do
if [ -f "$i" -a "$i" != "Config" ]; then
make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
if [ $? -ne 0 ]; then
- echo "md5 difference in lfs/$i"
+ echo -ne "MD5 difference in lfs/$i"
+ beautify message FAIL
ERROR=1
fi
fi
done
if [ $ERROR -eq 0 ]; then
- echo "Prefetch : all files md5sum match"
+ echo -ne "${BOLD}all files md5sum match${NORMAL}"
+ beautify message DONE
+ else
+ echo -ne "${BOLD}not all files were correctly download${NORMAL}"
+ beautify message FAIL
fi
- cd -
+ cd - >/dev/null 2>&1
;;
toolchain)
+ clear
prepareenv
beautify build_stage "Toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`"
buildtoolchain
exit 0
fi
echo -en "REV $SVN_REVISION: Downloading..."
- svn export http://svn.ipfire.eu/svn/ipfire ipfire-source/ --force > /dev/null
- svn log http://svn.ipfire.eu/svn/ipfire -r 1:$SVN_REVISION > ipfire-source/Changelog
- #svn info http://svn.ipfire.eu/svn/ipfire -r $SVN_REVISION > ipfire-source/svn_status
+ svn export http://svn.ipfire.eu/svn/ipfire/trunk ipfire-source/ --force > /dev/null
+ svn log http://svn.ipfire.eu/svn/ipfire/trunk -r 1:$SVN_REVISION > ipfire-source/Changelog
+ #svn info http://svn.ipfire.eu/svn/ipfire/trunk -r $SVN_REVISION > ipfire-source/svn_status
evaluate 1
echo -en "REV $SVN_REVISION: Compressing files..."
else
beautify message FAIL
fi
- else
- echo -ne "$i"
- beautify message SKIP
fi
done
rm -f /var/tmp/ftplist
;;
"SVN: Commit")
if [ -f /usr/bin/mcedit ]; then
- export EDITOR=/usr/sbin/mcedit
+ export EDITOR=/usr/bin/mcedit
+ fi
+ if [ -f /usr/bin/nano ]; then
+ export EDITOR=/usr/bin/nano
fi
$0 svn commit
$0 uploadsrc
$0 svn diff
;;
"Help")
- echo "Usage: $0 {build|changelog|check|checkclean|clean|gettoolchain|newpak|prefetch|shell|sync|toolchain}"
+ echo "Usage: $0 {build|changelog|clean|gettoolchain|newpak|prefetch|shell|sync|toolchain}"
cat doc/make.sh-usage
;;
"LOG: Tail")