sylware / nyanlinux (public) (License: AFFERO GPLv3) (since 2019-09-09) (hash sha1)
scripts for a lean, from scratch, amd hardware, linux distro

/x86.sh (d45246074663b07483d7e01f35b87ccdc44bb114) (4736 bytes) (mode 100755) (type blob)

#!/bin/sh
set -e
. ./conf.sh
umask 022

# THE ONLY PURPOSE ON THIS HERESY IS TO PROVIDE SUPPORT FOR ONE OF MY SINS: GAMING
# THEN THE SOLE PURPOSE OF THIS IS THE SUPPORT OF THE REMAINING 32 BITS _CRAP_
# FROM THE STEAM CLIENT

################################################################################
# there are 2 parts, which have different requirements
#===============================================================================
#     - the steam installer/downloader:
#	  - basically, only a 32 bits glibc installation, and a good set of
#	    unix commands (64 bits ones will do)
#         - it wants /usr/bin/env
#         - it wants /bin/bash (lib pinning uses bash arrays, not POSIX SH with
#           C coded helper)
#	  - it wants /sbin/ldconfig, use an empty script
#	  - do manually the lib pinning (it should be disabled since the empty
#	    /sbin/ldconfig will return nothing)
#===============================================================================
#     - the steam client:
#         - it wants zenity (until it's fixed), use the script faking it in
#           nyanlinux files directory or you can get nasty bash pipe race
#           condition bugs
#         - it wants a dbus system daemon and a dbus session daemon 
#         - it wants a non-root user to run
#	  - proper libs pinned (see the installer/downloader)
#         - it wants the root CA certificates as /etc/ssl/ca-bundle.pem
#         - it will very probably want LIBGL_DRI3_DISABLE=1 (dota2 won't work
#           with this) without lib pinning: elf rpaths from many gfx stack lib
#           build systems destroy lib dependencies loading consistency
#         - it wants /usr/share/alsa for sound and voice support via alsa
#         - it wants /usr/share/X11 and a locale like LANG=en_US.UTF-8 for
#           "normal" key input, or you will get basic input support
################################################################################

# libtool files, *.la, do not interact well with -static-libgcc and
# -static-libstdc++ gcc options

./pkg-build x86-linux-headers
./pkg-build x86-glibc-headers-static-libgcc

# set up the full native system headers in one dir or libgcc will fail to
# configure not able to locate the linux headers (no configuration option allows
# to fix it)
cp -r $x86_prefix/devel/include-linux/include/* $x86_prefix/devel/include-glibc-static-libgcc

./pkg-build x86-cross-static-target-libgcc-binutils
./pkg-build x86-cross-static-target-libgcc-gcc-c

./pkg-build x86-glibc

################################################################################
################################################################################
# here, this is enough to run the 32 bits steam installer/downloader
################################################################################
################################################################################

# set up the full native system headers in one dir or libgcc will fail to
# configure not able to locate the linux headers (no configuration option allows
# to fix it)
cp -r $x86_prefix/devel/include-linux/include/* $x86_prefix/devel/include-glibc-linux

./pkg-build x86-cross-binutils
./pkg-build x86-cross-gcc-compilers

./pkg-build x86-llvm
./pkg-build x86-drm
./pkg-build x86-zlib
./pkg-build x86-libpthread-stubs
./pkg-build x86-libXau
# you may have to install the xcb-proto python2 module
./pkg-build x86-libxcb
./pkg-build x86-libX11
./pkg-build x86-libXext
./pkg-build x86-libXfixes
./pkg-build x86-libXdamage
./pkg-build x86-libxshmfence
./pkg-build x86-libXrender
./pkg-build x86-libXrandr
./pkg-build x86-expat
./pkg-build x86-libelf
./pkg-build x86-mesa

# the following are not required to compile mesa, but without being in sync
# with mesa, it will crash the client or the overlay
./pkg-build x86-libXScrnSaver
./pkg-build x86-libXi
./pkg-build x86-libXcomposite
./pkg-build x86-libXcursor
./pkg-build x86-libXinerama
./pkg-build x86-libXdmcp
./pkg-build x86-libXxf86vm
./pkg-build x86-libICE
./pkg-build x86-libSM
./pkg-build x86-libXt
#-------------------------------------------------------------------------------
./pkg-build x86-bzip2
./pkg-build x86-libpng
./pkg-build x86-freetype
./pkg-build x86-nyanuuid
./pkg-build x86-fontconfig
./pkg-build x86-libXft
#-------------------------------------------------------------------------------

# lighten a bit the x86 layer and remove elf rpath
cp -f $x86_cross_toolchain_dir_root/bin/$x86_target_gnu_triple-strip /tmp/strip
find $x86_prefix -type f | while read f; do if file $f | egrep 'ELF.+(shared|executable)' >/dev/null; then /tmp/strip -s $f; chrpath -d $f; fi; done
rm -f /tmp/strip
rm -Rf $x86_prefix/devel/share/doc $x86_prefix/devel/share/man


Mode Type Size Ref File
100644 blob 5 8eba6c8dd4dcaf6166bd22285ed34625f38a84ff .gitignore
100755 blob 2487 533016d4902080b22ae5dc5352802ebdd0d78b16 01-x86_64-nyan-linux-gnu.sh
100755 blob 4254 31fdc18cc3e6c6cfd8444fa404f7e82f849bad56 02-nyan-cross-core.sh
100755 blob 3549 7f1362bad6786a6818ce7a7d613d0dc11f611fb9 03-nyan-cross-x11.sh
100755 blob 12534 f9036d33f9f159ea2421ce1a1ebf7067f0f695c1 04-bootstrap-conf.sh
100755 blob 671 5f6bc5de83a883da3a7f0d4a37e1d0ef51c08561 10-sdk-conf.sh
100755 blob 2201 83fa9bf5bddbecb88db53779e324b9f270b1080e 11-sdk.sh
100755 blob 2826 090b622caebd38755ef1e57a9cf0f4f673b22a8e 12-desktop.sh
100755 blob 129 08460f0dece90701f01cbf7d710609ecbb3d56e0 13-beyond.sh
100644 blob 1075 1b5314b511d4c6dc7eb4db36a21dd47ba5a00a9d INSTALL
100644 blob 30 c9b735fa1332286f4b3f5f81fa10527fd7506b6e LICENSE
100644 blob 1973 6aa180fc473777d9ca6b155cbf9b973065cdd77a README
040000 tree - e41fd62d835693c76d6118a7c0e6bb1d14686c0b builders
100644 blob 2986 6d58a03051e12dba00732ba0048dc6548e86f173 conf.sh
040000 tree - 44203d1824683f2cc7632b3f1754703932bfd722 files
100755 blob 282 47daa03e8253af88af8ec2da14829d97ba6b2e04 pkg-build
100755 blob 289 7f5fbdbb712f274d04a036b9c486cbc9cf581be6 pkg-build-target
100644 blob 915 a7f21134dbc05d0e8227eaee366856b8171832a4 sdk.sh
100755 blob 4736 d45246074663b07483d7e01f35b87ccdc44bb114 x86.sh
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/sylware/nyanlinux

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/sylware/nyanlinux

Clone this repository using git:
git clone git://git.rocketgit.com/user/sylware/nyanlinux

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main