Note
The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.
Difference between revisions of "User:Drobbins/CLFS"
Jump to navigation
Jump to search
(Created page with "Getting CLFS building entirely in your existing user's home directory should be possible. I'm working on cleaning up some things in CLFS, and want to see if we can build ever...") |
|||
(7 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Isolated CLFS Script == | |||
Right now, CLFS as-is requires some changes to the host system -- the creation of {{f|/tools}} and {{f|/cross-tools}} symlinks on the root filesystem, as well as creation of a {{c|clfs}} user along with a custom {{c|.bash_profile}} and {{c|.bashrc}} for that user. Rather than do this, I'm working on getting each build working from a self-contained script as a regular user without these requirements. | |||
{{ | The script below accomplishes the following things when it builds {{c|file-5.19}}: | ||
* It creates a shell that is unpolluted with existing environment settings, setting just what is needed for the build, just like the {{c|clfs}} user environment does in CLFS. | |||
* Directory structure is located inside the user's home directory: {{f|/home/drobbins/sexybeast}}. | |||
* Cross-tools are located at {{f|/home/drobbins/sexybeast/cross-tools}}, and the build uses this path directly rather than {{f|/cross-tools}}. This is done by tweaking {{c|$DESTDIR}} for {{c|make install}} rather than {{c|--prefix}} for {{c|./configure}}. Should be fine using this approach. | |||
So I think script essentially wraps the CLFS cross-tools build process in a self-contained build environment without the typical CLFS host-related tweaks described above. | |||
{{file|lang=bash|body= | |||
#!/bin/bash | #!/bin/bash | ||
exec /usr/bin/env -i /bin/bash --noprofile --norc << EOF | exec /usr/bin/env -i /bin/bash --noprofile --norc << "EOF" | ||
set +h | set +h | ||
umask 022 | umask 022 | ||
CLFS=$HOME/sexybeast | # ========================================================== | ||
LC_ALL=POSIX | # Set up the environment variables: | ||
PATH=$CLFS/cross-tools/bin:/bin:/usr/bin | # ========================================================== | ||
export HOME=/home/drobbins | |||
export CLFS=$HOME/sexybeast | |||
export CLFS_CROSS_TOOLS=${CLFS}/cross-tools | |||
export D=${CLFS_CROSS_TOOLS} | |||
export LC_ALL=POSIX | |||
export PATH=$CLFS/cross-tools/bin:/bin:/usr/bin | |||
unset CFLAGS CXXFLAGS | unset CFLAGS CXXFLAGS | ||
echo Hello. | echo Hello. | ||
export CLFS_HOST=$(echo ${MACHTYPE} {{!}} sed -e 's/-[^-]*/-cross/') | |||
export CLFS_TARGET="powerpc64-unknown-linux-gnu" | |||
export BUILD64="-m64" | |||
# ========================================================== | |||
# The actual build steps go here: | |||
# ========================================================== | |||
cd file-5.19 && ./configure --prefix=/ --disable-static && \ | |||
make -j && \ | |||
make DESTDIR=${D} install | |||
EOF | EOF | ||
}} | }} |
Latest revision as of 04:17, February 9, 2022
Isolated CLFS Script
Right now, CLFS as-is requires some changes to the host system -- the creation of /tools
and /cross-tools
symlinks on the root filesystem, as well as creation of a clfs
user along with a custom .bash_profile
and .bashrc
for that user. Rather than do this, I'm working on getting each build working from a self-contained script as a regular user without these requirements.
The script below accomplishes the following things when it builds file-5.19
:
- It creates a shell that is unpolluted with existing environment settings, setting just what is needed for the build, just like the
clfs
user environment does in CLFS. - Directory structure is located inside the user's home directory:
/home/drobbins/sexybeast
. - Cross-tools are located at
/home/drobbins/sexybeast/cross-tools
, and the build uses this path directly rather than/cross-tools
. This is done by tweaking$DESTDIR
formake install
rather than--prefix
for./configure
. Should be fine using this approach.
So I think script essentially wraps the CLFS cross-tools build process in a self-contained build environment without the typical CLFS host-related tweaks described above.
(bash source code)
#!/bin/bash
exec /usr/bin/env -i /bin/bash --noprofile --norc << "EOF"
set +h
umask 022
# ==========================================================
# Set up the environment variables:
# ==========================================================
export HOME=/home/drobbins
export CLFS=$HOME/sexybeast
export CLFS_CROSS_TOOLS=${CLFS}/cross-tools
export D=${CLFS_CROSS_TOOLS}
export LC_ALL=POSIX
export PATH=$CLFS/cross-tools/bin:/bin:/usr/bin
unset CFLAGS CXXFLAGS
echo Hello.
export CLFS_HOST=$(echo ${MACHTYPE} | sed -e 's/-[^-]*/-cross/')
export CLFS_TARGET="powerpc64-unknown-linux-gnu"
export BUILD64="-m64"
# ==========================================================
# The actual build steps go here:
# ==========================================================
cd file-5.19 && ./configure --prefix=/ --disable-static && \
make -j && \
make DESTDIR=${D} install
EOF