User:Pnoecker/clfs

From Funtoo
Jump to navigation Jump to search

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 $ tar -xf gmp-6.0.0a.tar.xz && cd gmp-6.0.0
user $ ./configure --prefix=/cross-tools --enable-cxx --disable-static && make && make install
user $ make check
user $ cd .. && rm -rf gmp-6.0.0

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

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 $ tar -xf cloog-0.18.2.tar.gz && cd cloog-0.18.2
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 $ tar -xf binutils-2.24.tar.bz2 && cd binutils-2.24
user $ mkdir -v ../binutils-build && cd ../binutils-build
user $ AR=ar AS=as ../binutils-2.24/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.24