The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.
User:Pnoecker/clfs
this will overview my powerpc64 clfs progress on this page. http://www.clfs.org/view/CLFS-3.0.0-SYSVINIT/ppc64-64/index.html
first export the clfs variable. this is my ~/sexybeast.
user $ pwd /home/pnoecker
user $ mkdir sexybeast user $ export CLFS=/home/pnoecker/sexybeast user $ sudo su root # export CLFS=/home/pnoecker/sexybeast
follow from http://www.clfs.org/view/CLFS-3.0.0-SYSVINIT/ppc64-64/materials/introduction.html
user $ mkdir -v ${CLFS}/sources user $ chmod -v a+wt ${CLFS}/sources user $ wget http://www.clfs.org/view/CLFS-3.0.0-SYSVINIT/ppc64-64/dl.list
dl.list has a broken isl link. use nano ctl + w : isl to find the link. replace it with this live link. http://ftp.osuosl.org/pub/clfs/conglomeration/isl/isl-0.12.2.tar.lzma then write the file and exit out of nano.
- download sources
user $ wget -i dl.list -P ${CLFS}/sources
follow on from http://www.clfs.org/view/CLFS-3.0.0-SYSVINIT/ppc64-64/final-preps/creatingtoolsdir.html
igore root, were doing this cash money $$$$ on the first command. second command requires root.
user $ install -dv ${CLFS}/tools user $ sudo ln -sv ${CLFS}/tools /
create cross tool directory.
user $ install -dv ${CLFS}/cross-tools user $ sudo ln -sv ${CLFS}/cross-tools /
http://www.clfs.org/view/CLFS-3.0.0-SYSVINIT/ppc64-64/final-preps/addinguser.html
user $ sudo groupadd clfs user $ sudo useradd -s /bin/bash -g clfs -d /home/clfs clfs user $ sudo mkdir -pv /home/clfs user $ sudo chown -v clfs:clfs /home/clfs user $ sudo chown -v clfs ${CLFS}/tools user $ sudo chown -v clfs ${CLFS}/cross-tools user $ sudo chown -v clfs ${CLFS}/sources user $ sudo su - clfs
setup environment:
user $ cat > ~/.bash_profile << "EOF" exec env -i HOME=${HOME} TERM=${TERM} PS1='\u:\w\$ ' /bin/bash EOF user $ cat > ~/.bashrc << "EOF" set +h umask 022 CLFS=/home/pnoecker/sexybeast LC_ALL=POSIX PATH=/cross-tools/bin:/bin:/usr/bin export CLFS LC_ALL PATH unset CFLAGS CXXFLAGS EOF user $source ~/.bash_profile
setup host and target variables.
http://www.clfs.org/view/CLFS-3.0.0-SYSVINIT/ppc64-64/final-preps/variables.html
user $ export CLFS_HOST=$(echo ${MACHTYPE} | sed -e 's/-[^-]*/-cross/') user $ export CLFS_TARGET="powerpc64-unknown-linux-gnu" user $ export BUILD64="-m64" user $ cat >> ~/.bashrc << EOF export CLFS_HOST="${CLFS_HOST}" export CLFS_TARGET="${CLFS_TARGET}" export BUILD64="${BUILD64}" EOF
link the sources directory to your clfs ~ home work space:
user $ ln -sv ${CLFS}/sources .
http://www.clfs.org/view/CLFS-3.0.0-SYSVINIT/ppc64-64/cross-tools/introduction.html
user $ tar -xf file-5.19.tar.gz && cd file-5.19
compile according to the page. http://www.clfs.org/view/CLFS-3.0.0-SYSVINIT/ppc64-64/cross-tools/file.html
user $ ./configure --prefix=/cross-tools --disable-static && make && make install
once finished compiling, go back down a level and remove the source directory:
user $ cd .. && rm -rf file-5.19
install the linux headers. ch 5.3
user $ wget https://trac.clfs.org/export/a4a0c7f1cd78df350da9e28b1d8f496702356e0f/patches/patch-3.14.21.xz user $ tar -xf linux-3.14.tar.xz && cd linux-3.14 user $ xzcat ../patch-3.14.21.xz | patch -Np1 -i - user $ make mrproper user $ make ARCH=powerpc headers_check user $ make ARCH=powerpc INSTALL_HDR_PATH=/tools headers_install
ch 5.4
user $ wget https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz user $ tar -xf m4-1.4.19.tar.xz && cd m4-1.4.19 user $ ./configure --prefix=/cross-tools && make && make install
ch 5.5
user $ wget https://ftp.gnu.org/gnu/ncurses/ncurses-6.3.tar.gz user $ tar -xf ncurses-6.3.tar.gz && cd ncurses-6.3 user $ ./configure --prefix=/cross-tools --without-debug --without-shared && make -C include && make -C progs tic && install -v -m755 progs/tic /cross-tools/bin
ch 5.6
user $ tar -xf pkg-config-lite-0.28-1.tar.gz && cd pkg-config-lite-0.28-1 user $ ./configure --prefix=/cross-tools --host=${CLFS_TARGET} --with-pc-path=/tools/lib/pkgconfig:/tools/share/pkgconfig && make && make install user $ cd .. && rm -rf pkg-config-lite-0.28-1
ch 5.7 this package suggests using make check, it's optional but it's good practice to ensure it's working.
user $ wget https://ftp.gnu.org/gnu/gmp/gmp-6.2.1.tar.xz user $ tar -xf gmp-6.2.1.tar.xz && cd gmp-6.2.1 user $ ./configure --prefix=/cross-tools --enable-cxx --disable-static && make && make install user $ make check
user $ cd .. && rm -rf gmp-6.2.1
ch 5.8
user $ tar -xf mpfr-3.1.2.tar.xz && cd mpfr-3.1.2 user $ patch -Np1 -i ../mpfr-3.1.2-fixes-4.patch user $ LDFLAGS="-Wl,-rpath,/cross-tools/lib" ./configure --prefix=/cross-tools --disable-static --with-gmp=/cross-tools && make && make install user $ cd .. && rm -rf mpfr-3.1.2
ch 5.9
user $ wget https://ftp.gnu.org/gnu/mpc/mpc-1.0.2.tar.gz user $ tar -xf mpc-1.0.2.tar.gz && cd mpc-1.0.2 user $ LDFLAGS="-Wl,-rpath,/cross-tools/lib" ./configure --prefix=/cross-tools --disable-static --with-gmp=/cross-tools --with-mpfr=/cross-tools && make && make install user $ cd .. && rm -rf mpc-1.0.2
ch 5.10
this needs to be updated to isl 0.15 or 16 for gcc 8 series later on.
user $ tar -xf isl-0.12.2.tar.lzma && cd isl-0.12.2 user $ LDFLAGS="-Wl,-rpath,/cross-tools/lib" ./configure --prefix=/cross-tools --disable-static --with-gmp-prefix=/cross-tools && make && make install user $ cd .. && rm -rf isl-0.12.2
ch 5.11
user $ wget http://www.bastoul.net/cloog/pages/download/cloog-0.18.4.tar.gz user $ tar -xf cloog-0.18.4.tar.gz && cd cloog-0.18.4 user $ LDFLAGS="-Wl,-rpath,/cross-tools/lib" ./configure --prefix=/cross-tools --disable-static --with-gmp-prefix=/cross-tools --with-isl-prefix=/cross-tools user $ cp -v Makefile{,.orig} && sed '/cmake/d' Makefile.orig > Makefile && make && make install user $ cd .. && rm -rf cloog-0.18.2
ch 5.12
bin utils needs to be built in an external directory.
user $ wget https://mirrors.sarata.com/gnu/binutils/binutils-2.36.tar.xz user $ tar -xf binutils-2.36.tar.xz && cd binutils-2.36 user $ mkdir -v ../binutils-build && cd ../binutils-build user $ AR=ar AS=as ../binutils-2.36/configure --prefix=/cross-tools --host=${CLFS_HOST} --target=${CLFS_TARGET} --with-sysroot=${CLFS} --with-lib-path=/tools/lib --disable-nls --disable-static --enable-64-bit-bfd --disable-multilib --disable-werror && make && make install user $ cd .. && rm -rf binutils-build && rm -rf binutils-2.36
ch 5.13
gcc static:
user $ tar -xf gcc-8.1.0.tar.bz2 && cd gcc-8.1.0 user $ echo -en '\n#undef STANDARD_STARTFILE_PREFIX_1\n#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"\n' >> gcc/config/rs6000/sysv4.h && echo -en '\n#undef STANDARD_STARTFILE_PREFIX_2\n#define STANDARD_STARTFILE_PREFIX_2 ""\n' >> gcc/config/rs6000/sysv4.h user $ touch /tools/include/limits.h && mkdir -v ../gcc-build && cd ../gcc-build
user $ AR=ar LDFLAGS="-Wl,-rpath,/cross-tools/lib" \ ../gcc-8.1.0/configure --prefix=/cross-tools \ --build=${CLFS_HOST} --host=${CLFS_HOST} --target=${CLFS_TARGET} \ --with-sysroot=${CLFS} --with-local-prefix=/tools \ --with-native-system-header-dir=/tools/include --disable-nls \ --disable-shared --with-mpfr=/cross-tools --with-gmp=/cross-tools \ --with-isl=/cross-tools --with-cloog=/cross-tools --with-mpc=/cross-tools \ --without-headers --with-newlib --disable-decimal-float --disable-libgomp \ --disable-libmudflap --disable-libssp --disable-libatomic --disable-libitm \ --disable-libsanitizer --disable-libquadmath --disable-threads \ --disable-multilib --disable-target-zlib --with-system-zlib \ --enable-languages=c --enable-checking=release
user $ make all-gcc all-target-libgcc && make install-gcc install-target-libgcc user $ cd .. && rm -rf gcc-8.1.0 && rm -rf gcc-build
ch 5.14
glib c
user $ tar -xf glibc-2.19.tar.xz && cd glibc-2.19 user $ cp -v timezone/Makefile{,.orig} && sed 's/\\$$(pwd)/`pwd`/' timezone/Makefile.orig > timezone/Makefile user $ mkdir -v ../glibc-build && cd ../glibc-build user $ echo "libc_cv_ssp=no" > config.cache user $ BUILD_CC="gcc" CC="${CLFS_TARGET}-gcc ${BUILD64}" \ AR="${CLFS_TARGET}-ar" RANLIB="${CLFS_TARGET}-ranlib" \ ../glibc-2.19/configure --prefix=/tools \ --host=${CLFS_TARGET} --build=${CLFS_HOST} \ --disable-profile --enable-kernel=2.6.32 \ --with-binutils=/cross-tools/bin --with-headers=/tools/include \ --enable-obsolete-rpc --cache-file=config.cache && make && make install user $ cd .. && rm -rf glibc-build && rm -rf glibc-2.19
ch 5.15
gcc final pass
user $ tar -xf gcc-8.1.0.tar.xz && cd gcc-8.1.0 user $ echo -en '\n#undef STANDARD_STARTFILE_PREFIX_1\n#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"\n' >> gcc/config/rs6000/sysv4.h && echo -en '\n#undef STANDARD_STARTFILE_PREFIX_2\n#define STANDARD_STARTFILE_PREFIX_2 ""\n' >> gcc/config/rs6000/sysv4.h user $ mkdir -v ../gcc-build && cd ../gcc-build user $ AR=ar LDFLAGS="-Wl,-rpath,/cross-tools/lib" \ ../gcc-8.1.0/configure --prefix=/cross-tools \ --build=${CLFS_HOST} --target=${CLFS_TARGET} --host=${CLFS_HOST} \ --with-sysroot=${CLFS} --with-local-prefix=/tools \ --with-native-system-header-dir=/tools/include --disable-nls \ --disable-static --enable-languages=c,c++ --enable-__cxa_atexit \ --enable-threads=posix --disable-multilib \ --with-mpc=/cross-tools --with-mpfr=/cross-tools --with-gmp=/cross-tools \ --with-cloog=/cross-tools --with-isl=/cross-tools --with-system-zlib \ --enable-checking=release --enable-libstdcxx-time user $ make AS_FOR_TARGET="${CLFS_TARGET}-as" LD_FOR_TARGET="${CLFS_TARGET}-ld" && make install user $ cd .. && rm -rf gcc-build && rm -rf gcc-8.1.0
ch 6
ch 6.2
export CC="${CLFS_TARGET}-gcc ${BUILD64}" export CXX="${CLFS_TARGET}-g++ ${BUILD64}" export AR="${CLFS_TARGET}-ar" export AS="${CLFS_TARGET}-as" export RANLIB="${CLFS_TARGET}-ranlib" export LD="${CLFS_TARGET}-ld" export STRIP="${CLFS_TARGET}-strip" echo export CC=\""${CC}\"" >> ~/.bashrc echo export CXX=\""${CXX}\"" >> ~/.bashrc echo export AR=\""${AR}\"" >> ~/.bashrc echo export AS=\""${AS}\"" >> ~/.bashrc echo export RANLIB=\""${RANLIB}\"" >> ~/.bashrc echo export LD=\""${LD}\"" >> ~/.bashrc echo export STRIP=\""${STRIP}\"" >> ~/.bashrc
ch 6.3
user $ tar -xf gmp-6.2.1.tar.xz && cd gmp-6.2.1 user $ CC_FOR_BUILD=gcc ./configure --prefix=/tools --build=${CLFS_HOST} --host=${CLFS_TARGET} --enable-cxx && make && make install user $ cd .. && rm -rf gmp-6.2.1
ch 6.4
user $ tar -xf mpfr-3.1.2.tar.xz && cd mpfr-3.1.2 user $ patch -Np1 -i ../mpfr-3.1.2-fixes-4.patch user $ ./configure --prefix=/tools --build=${CLFS_HOST} --host=${CLFS_TARGET} && make && make install user $ cd .. && rm -rf mpfr-3.1.2
ch 6.5
user $ tar -xf mpc-1.0.2.tar.gz && cd mpc-1.0.2 user $ ./configure --prefix=/tools --build=${CLFS_HOST} --host=${CLFS_TARGET} && make && make install user $ cd .. && rm -rf mpc-1.0.2
ch 6.6
user $ tar -xf isl-0.16.1.tar.bz2 && cd isl-0.16.1 user $ ./configure --prefix=/tools --build=${CLFS_HOST} --host=${CLFS_TARGET} && make && make install user $ cd .. && rm -rf isl-0.16.1
ch 6.7
user $ tar -xf cloog-0.18.4.tar.gz && cd cloog-0.18.4 user $ ./configure --prefix=/tools --build=${CLFS_HOST} --host=${CLFS_TARGET} --with-isl=system && cp -v Makefile{,.orig} && sed '/cmake/d' Makefile.orig > Makefile && make && make install user $ cd .. && rm -rf cloog-0.18.4
ch 6.8
user $ wget https://zlib.net/zlib-1.2.11.tar.xz user $ tar -xf zlib-1.2.11.tar.xz && cd zlib-1.2.11 user $ ./configure --prefix=/tools && make && make install user $ cd .. && rm -rf zlib-1.2.11
ch 6.9
user $ wget https://mirrors.sarata.com/gnu/binutils/binutils-2.36.tar.xz user $ tar -xf binutils-2.36.tar.bz2 && cd binutils-2.36 user $ mkdir -v ../binutils-build && cd ../binutils-build user $ ../binutils-2.36/configure \ --prefix=/tools --build=${CLFS_HOST} --host=${CLFS_TARGET} \ --target=${CLFS_TARGET} --with-lib-path=/tools/lib --disable-nls \ --enable-shared --enable-64-bit-bfd --disable-multilib && make && make install user $ cd .. && rm -rf binutils-build && rm -rf binutils-2.36
ch 6.10
user $ tar -xf gcc-8.1.0.tar.xz && cd gcc-8.1.0 user $ echo -en '\n#undef STANDARD_STARTFILE_PREFIX_1\n#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"\n' >> gcc/config/rs6000/sysv4.h && echo -en '\n#undef STANDARD_STARTFILE_PREFIX_2\n#define STANDARD_STARTFILE_PREFIX_2 ""\n' >> gcc/config/rs6000/sysv4.h user $ cp -v gcc/Makefile.in{,.orig} && sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig > gcc/Makefile.in user $ mkdir -v ../gcc-build && cd ../gcc-build user $ ../gcc-8.1.0/configure --prefix=/tools --disable-multilib \ --build=${CLFS_HOST} --host=${CLFS_TARGET} --target=${CLFS_TARGET} \ --with-local-prefix=/tools --disable-nls --enable-languages=c,c++ \ --disable-libstdcxx-pch \ --with-native-system-header-dir=/tools/include --enable-checking=release \ --enable-libstdcxx-time user $ cp -v Makefile{,.orig} && sed "/^HOST_\(GMP\|ISL\|CLOOG\)\(LIBS\|INC\)/s:/tools:/cross-tools:g" \ Makefile.orig > Makefile user $ make AS_FOR_TARGET="${AS}" LD_FOR_TARGET="${LD}" user $ make install && cp -v ../gcc-8.1.0/include/libiberty.h /tools/include user $ cd .. && rm -rf gcc-build && rm -rf gcc-8.1.0
ch 6.11
user $ tar -xf ncurses-6.3.tar.gz && cd ncurses-6.3 user $ ./configure --prefix=/tools --with-shared --build=${CLFS_HOST} --host=${CLFS_TARGET} --without-debug --without-ada --enable-overwrite --with-build-cc=gcc --disable-stripping && make && make install user $ cd .. && rm -rf ncurses-6.3
ch 6.12
user $ tar -xf bash-4.3.tar.gz && cd bash-4.3 user $ patch -Np1 -i ../bash-4.3-branch_update-5.patch user $ cat > config.cache << "EOF" ac_cv_func_mmap_fixed_mapped=yes ac_cv_func_strcoll_works=yes ac_cv_func_working_mktime=yes bash_cv_func_sigsetjmp=present bash_cv_getcwd_malloc=yes bash_cv_job_control_missing=present bash_cv_printf_a_format=yes bash_cv_sys_named_pipes=present bash_cv_ulimit_maxfds=yes bash_cv_under_sys_siglist=yes bash_cv_unusable_rtsigs=no gt_cv_int_divbyzero_sigfpe=yes EOF user $ ./configure --prefix=/tools --build=${CLFS_HOST} --host=${CLFS_TARGET} --without-bash-malloc --cache-file=config.cache && make && make install user $ cd .. && rm -rf bash-4.3
ch 6.13
user $ tar -xf bzip2-1.0.6.tar.gz && cd bzip2-1.0.6 user $ cp -v Makefile{,.orig} && sed -e 's@^\(all:.*\) test@\1@g' Makefile.orig > Makefile user $ make CC="${CC}" AR="${AR}" RANLIB="${RANLIB}" && make PREFIX=/tools install user $ cd .. && rm -rf bzip2-1.0.6
ch 6.14
user $ tar -xf check-0.9.13.tar.gz && cd check-0.9.13 user $ ./configure --prefix=/tools --build=${CLFS_HOST} --host=${CLFS_TARGET} && make && make install user $ cd .. && rm -rf check-0.9.13
ch 6.15
user $ tar -xf coreutils-8.22.tar.xz && cd coreutils-8.22 user $ cat > config.cache << EOF fu_cv_sys_stat_statfs2_bsize=yes gl_cv_func_working_mkstemp=yes EOF user $ patch -Np1 -i ../coreutils-8.22-noman-1.patch user $ ./configure --prefix=/tools --build=${CLFS_HOST} --host=${CLFS_TARGET} --enable-install-program=hostname --cache-file=config.cache && make && make install user $ cd .. && rm -rf coreutils-8.22