cd /mnt

mkdir -pv {etc,var,tools,usr/{bin,lib,lib64,sbin}}

for i in bin lib lib64 sbin; do
  ln -sv usr/$i $i
done

groupadd futura
useradd -s /bin/bash -g futura -m -k /dev/null futura

chown -v futura {usr{,/*},lib,lib64,var,etc,bin,sbin,tools}

su - futura

cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF

cat > ~/.bashrc << "EOF"
set +h
umask 022
FUTURA=/mnt
LC_ALL=POSIX
FUTURA_TGT=${CHOST}
PATH=/usr/bin
if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
PATH=$FUTURA/tools/bin:$PATH
CONFIG_SITE=$FUTURA/usr/share/config.site
export FUTURA LC_ALL FUTURA_TGT PATH CONFIG_SITE
export MAKEFLAGS=-j$(nproc)
EOF

# 5.2. Binutils-2.43.1 - 第一遍
tar xf binutils-2.43.1.tar.xz 
cd binutils-2.43.1
mkdir -v build
cd       build
../configure --prefix=$FUTURA/tools \
             --with-sysroot=$FUTURA \
             --target=$FUTURA_TGT   \
             --disable-nls       \
             --enable-gprofng=no \
             --disable-werror    \
             --enable-new-dtags  \
             --enable-default-hash-style=gnu \
             --libdir=$FUTURA/tools/lib64 &&
make &&
make install
cd ../../
rm -rf binutils-2.43.1

# 5.3. GCC-14.2.0 - 第一遍
tar xf gcc-14.2.0.tar.xz
cd gcc-14.2.0
tar -xf ../mpfr-4.2.1.tar.xz
mv -v mpfr-4.2.1 mpfr
tar -xf ../gmp-6.3.0.tar.xz
mv -v gmp-6.3.0 gmp
tar -xf ../mpc-1.3.1.tar.gz
mv -v mpc-1.3.1 mpc
mkdir -v build
cd       build
../configure                     \
    --target=$FUTURA_TGT         \
    --prefix=$FUTURA/tools       \
    --with-glibc-version=2.40    \
    --with-sysroot=$FUTURA       \
    --with-newlib                \
    --without-headers            \
    --enable-default-pie         \
    --enable-default-ssp         \
    --disable-nls                \
    --disable-shared             \
    --disable-multilib           \
    --disable-threads            \
    --disable-libatomic          \
    --disable-libgomp            \
    --disable-libquadmath        \
    --disable-libssp             \
    --disable-libvtv             \
    --disable-libstdcxx          \
    --enable-languages=c,c++     \
    --libdir=$FUTURA/tools/lib64 &&
make &&
make install
cd ..
cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \
  `dirname $($FUTURA_TGT-gcc -print-libgcc-file-name)`/include/limits.h
cd ..
rm -rf gcc-14.2.0

# 5.4. Linux-6.11.6 API 头文件
tar xf linux-6.11.7.tar.xz
cd linux-6.11.7
make mrproper
make headers
find usr/include -type f ! -name '*.h' -delete
cp -rv usr/include $FUTURA/usr
cd ..
rm -rf linux-6.11.7

# 5.5. Glibc-2.40
tar xf glibc-2.40.tar.xz
cd glibc-2.40
patch -Np1 -i ../glibc-2.40-fhs-1.patch
mkdir -v build
cd       build
echo "slibdir=/usr/lib64"    >> configparms
echo "rtlddir=/usr/lib64"    >> configparms
echo "sbindir=/usr/bin"      >> configparms
echo "rootsbindir=/usr/sbin" >> configparms
echo "complocaledir=/usr/lib/locale" >> configparms
../configure                             \
      --prefix=/usr                      \
      --host=$FUTURA_TGT                 \
      --build=$FUTURA_TGT                \
      --enable-kernel=4.19               \
      --with-headers=$FUTURA/usr/include \
      --disable-nscd                     \
      --libdir=/usr/lib64                \
      --disable-timezone-tools
make &&
make DESTDIR=$FUTURA install

echo 'int main(){}' | $FUTURA_TGT-gcc -xc -
readelf -l a.out | grep ld-linux
rm -v a.out

cd ../../
rm -rf glibc-2.40


# 5.6. GCC-14.2.0 中的 Libstdc++
tar xf gcc-14.2.0.tar.xz
cd gcc-14.2.0
mkdir -v build
cd       build
../libstdc++-v3/configure           \
    --host=$FUTURA_TGT              \
    --build=$FUTURA_TGT             \
    --prefix=/usr                   \
    --disable-multilib              \
    --disable-nls                   \
    --disable-libstdcxx-pch         \
    --with-gxx-include-dir=/tools/$FUTURA_TGT/include/c++/14.2.0  \
    --libdir=/usr/lib64
make
make DESTDIR=$FUTURA install
rm -v $FUTURA/usr/lib64/lib{stdc++{,exp,fs},supc++}.la
cd ../../
rm -rf gcc-14.2.0

# 6.2. M4-1.4.19
tar xf m4-1.4.19.tar.xz
cd m4-1.4.19
./configure --prefix=/usr        \
            --host=$FUTURA_TGT   \
            --build=$FUTURA_TGT  \
            --libdir=/usr/lib64
make
make DESTDIR=$FUTURA install
cd ..
rm -rf m4-1.4.19

# 6.3. Ncurses-6.5
tar xf ncurses-6.5.tar.gz
cd ncurses-6.5
mkdir build
pushd build
  ../configure AWK=gawk
  make -C include
  make -C progs tic
popd
./configure --prefix=/usr                \
            --host=$FUTURA_TGT           \
            --build=$FUTURA_TGT          \
            --mandir=/usr/share/man      \
            --with-manpage-format=normal \
            --with-shared                \
            --without-normal             \
            --with-cxx-shared            \
            --without-debug              \
            --without-ada                \
            --disable-stripping          \
            AWK=gawk                     \
            --libdir=/usr/lib64
make
make DESTDIR=$FUTURA TIC_PATH=$(pwd)/build/progs/tic install
ln -sv libncursesw.so $FUTURA/usr/lib64/libncurses.so
sed -e 's/^#if.*XOPEN.*$/#if 1/' \
    -i $FUTURA/usr/include/curses.h
cd ../
rm -rf ncurses-6.5

# 6.4. Bash-5.2.37
tar xf bash-5.2.37.tar.gz
cd bash-5.2.37
./configure --prefix=/usr                 \
            --build=$FUTURA_TGT           \
            --host=$FUTURA_TGT            \
            --without-bash-malloc         \
            --libdir=/usr/lib64
make
make DESTDIR=$FUTURA install
ln -sv bash $FUTURA/bin/sh
cd ..
rm -rf bash-5.2.37

# 6.5. Coreutils-9.5
tar xf coreutils-9.5.tar.xz
cd coreutils-9.5
./configure --prefix=/usr                        \
            --host=$FUTURA_TGT                   \
            --build=$FUTURA_TGT                  \
            --enable-install-program=hostname    \
            --enable-no-install-program=kill,uptime \
            --libdir=/usr/lib64
make
make DESTDIR=$FUTURA install
mv -v $FUTURA/usr/bin/chroot              $FUTURA/usr/sbin
mkdir -pv $FUTURA/usr/share/man/man8
mv -v $FUTURA/usr/share/man/man1/chroot.1 $FUTURA/usr/share/man/man8/chroot.8
sed -i 's/"1"/"8"/'                       $FUTURA/usr/share/man/man8/chroot.8
cd ../
rm -rf coreutils-9.5

# 6.6. Diffutils-3.10
tar xf diffutils-3.10.tar.xz
cd diffutils-3.10
./configure --prefix=/usr         \
            --host=$FUTURA_TGT    \
            --build=$FUTURA_TGT   \
            --libdir=/usr/lib64
make
make DESTDIR=$FUTURA install
cd ..
rm -rf diffutils-3.10

# 6.7. File-5.45
tar xf file-5.45.tar.gz
cd file-5.45
mkdir build
pushd build
  ../configure --disable-bzlib      \
               --disable-libseccomp \
               --disable-xzlib      \
               --disable-zlib
  make
popd
./configure --prefix=/usr         \
            --host=$FUTURA_TGT    \
            --build=$FUTURA_TGT   \
            --libdir=/usr/lib64
make
make DESTDIR=$FUTURA install
rm -v $FUTURA/usr/lib64/libmagic.la
cd ..
rm -rf file-5.45

# 6.8. Findutils-4.10.0
tar xf findutils-4.10.0.tar.xz
cd findutils-4.10.0
./configure --prefix=/usr                   \
            --localstatedir=/var/lib/locate \
            --host=$FUTURA_TGT              \
            --build=$FUTURA_TGT             \
            --libdir=/usr/lib64
make
make DESTDIR=$FUTURA install
cd ..
rm -rf findutils-4.10.0

# 6.9. Gawk-5.3.1
tar xf gawk-5.3.1.tar.xz
cd gawk-5.3.1
sed -i 's/extras//' Makefile.in
./configure --prefix=/usr         \
            --host=$FUTURA_TGT    \
            --build=$FUTURA_TGT   \
            --libdir=/usr/lib64
make
make DESTDIR=$FUTURA install
cd ..
rm -rf gawk-5.3.1

# 6.10. Grep-3.11
tar xf grep-3.11.tar.xz
cd grep-3.11
./configure --prefix=/usr         \
            --host=$FUTURA_TGT    \
            --build=$FUTURA_TGT   \
            --libdir=/usr/lib64
make
make DESTDIR=$FUTURA install
cd ..
rm -rf grep-3.11

# 6.11. Gzip-1.13
tar xf gzip-1.13.tar.xz
cd gzip-1.13
./configure --prefix=/usr         \
            --host=$FUTURA_TGT    \
            --build=$FUTURA_TGT   \
            --libdir=/usr/lib64
make
make DESTDIR=$FUTURA install
cd ..
rm -rf gzip-1.13

# 6.12. Make-4.4.1
tar xf make-4.4.1.tar.gz
cd make-4.4.1
./configure --prefix=/usr         \
            --without-guile       \
            --host=$FUTURA_TGT    \
            --build=$FUTURA_TGT   \
            --libdir=/usr/lib64
make
make DESTDIR=$FUTURA install
cd ..
rm -rf make-4.4.1

# 6.13. Patch-2.7.6
tar xf patch-2.7.6.tar.xz
cd patch-2.7.6
./configure --prefix=/usr         \
            --host=$FUTURA_TGT    \
            --build=$FUTURA_TGT   \
            --libdir=/usr/lib64
make
make DESTDIR=$FUTURA install
cd ..
rm -rf patch-2.7.6

# 6.14. Sed-4.9
tar xf sed-4.9.tar.xz
cd sed-4.9
./configure --prefix=/usr         \
            --host=$FUTURA_TGT    \
            --build=$FUTURA_TGT   \
            --libdir=/usr/lib64
make
make DESTDIR=$FUTURA install
cd ..
rm -rf sed-4.9

# 6.15. Tar-1.35
tar xf tar-1.35.tar.xz
cd tar-1.35
./configure --prefix=/usr         \
            --host=$FUTURA_TGT    \
            --build=$FUTURA_TGT   \
            --libdir=/usr/lib64
make
make DESTDIR=$FUTURA install
cd ..
rm -rf tar-1.35

# 6.16. Xz-5.6.3
tar xf xz-5.6.3.tar.xz
cd xz-5.6.3
./configure --prefix=/usr                     \
            --host=$FUTURA_TGT                \
            --build=$FUTURA_TGT               \
            --disable-static                  \
            --disable-doc                     \
            --libdir=/usr/lib64
make
make DESTDIR=$FUTURA install
rm -v $FUTURA/usr/lib64/liblzma.la
cd ..
rm -rf xz-5.6.3

# 6.17. Binutils-2.43.1 - 第二遍
tar xf binutils-2.43.1.tar.xz
cd binutils-2.43.1
sed '6009s/$add_dir//' -i ltmain.sh
mkdir -v build
cd       build
../configure                   \
    --prefix=/usr              \
    --build=$FUTURA_TGT        \
    --host=$FUTURA_TGT         \
    --target=$FUTURA_TGT       \
    --disable-nls              \
    --enable-shared            \
    --enable-gprofng=no        \
    --disable-werror           \
    --enable-64-bit-bfd        \
    --enable-new-dtags         \
    --enable-default-hash-style=gnu  \
    --libdir=/usr/lib64
make
make DESTDIR=$FUTURA install
rm -v $FUTURA/usr/lib64/lib{bfd,ctf,ctf-nobfd,opcodes,sframe}.{a,la}
cd ../../
rm -rf binutils-2.43.1

# 6.18. GCC-14.2.0 - 第二遍
tar xf gcc-14.2.0.tar.xz
cd gcc-14.2.0
tar -xf ../mpfr-4.2.1.tar.xz
mv -v mpfr-4.2.1 mpfr
tar -xf ../gmp-6.3.0.tar.xz
mv -v gmp-6.3.0 gmp
tar -xf ../mpc-1.3.1.tar.gz
mv -v mpc-1.3.1 mpc
sed '/thread_header =/s/@.*@/gthr-posix.h/' \
    -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in
mkdir -v build
cd       build
../configure                                       \
    --build=$FUTURA_TGT                            \
    --host=$FUTURA_TGT                             \
    --target=$FUTURA_TGT                           \
    LDFLAGS_FOR_TARGET=-L$PWD/$FUTURA_TGT/libgcc   \
    --prefix=/usr                                  \
    --with-build-sysroot=$FUTURA                   \
    --enable-default-pie                           \
    --enable-default-ssp                           \
    --disable-nls                                  \
    --disable-multilib                             \
    --disable-libatomic                            \
    --disable-libgomp                              \
    --disable-libquadmath                          \
    --disable-libsanitizer                         \
    --disable-libssp                               \
    --disable-libvtv                               \
    --enable-languages=c,c++                       \
    --libdir=/usr/lib64 &&
make &&
make DESTDIR=$FUTURA install &&
ln -sv gcc $FUTURA/usr/bin/cc
cd ../../
rm-rf gcc-14.2.0

# 7.2. 改变所有者
exit
chown --from futura -R root:root /mnt/{usr,lib,lib64,var,etc,bin,sbin,tools}

# 7.3. 准备虚拟内核文件系统
mkdir -pv /mnt/{dev,proc,sys,run}

mount -v --bind /dev /mnt/dev

mount -vt devpts devpts -o gid=5,mode=0620 /mnt/dev/pts
mount -vt proc proc /mnt/proc
mount -vt sysfs sysfs /mnt/sys
mount -vt tmpfs tmpfs /mnt/run

if [ -h /mnt/dev/shm ]; then
  install -v -d -m 1777 /mnt$(realpath /dev/shm)
else
  mount -vt tmpfs -o nosuid,nodev tmpfs /mnt/dev/shm
fi

chroot "/mnt" /usr/bin/env -i        \
    HOME=/root                       \
    TERM="$TERM"                     \
    PS1='(futura chroot) \u:\w\$ '   \
    PATH=/usr/bin:/usr/sbin          \
    MAKEFLAGS="-j$(nproc)"           \
    CHOST=${CHOST}    \
    /bin/bash --login

mkdir -pv /{boot,home,mnt,opt,srv}

mkdir -pv /etc/{opt,sysconfig}
mkdir -pv /usr/lib/firmware
mkdir -pv /media/{floppy,cdrom}
mkdir -pv /usr/include
mkdir -pv /usr/lib/locale
mkdir -pv /usr/share/{color,dict,doc,info,locale,man}
mkdir -pv /usr/share/{misc,terminfo,zoneinfo}
mkdir -pv /usr/share/man/man{1..8}
mkdir -pv /var/{cache,local,log,mail,opt,spool}
mkdir -pv /var/lib/{color,misc,locate}

ln -sfv /run /var/run
ln -sfv /run/lock /var/lock

install -dv -m 0750 /root
install -dv -m 1777 /tmp /var/tmp

ln -sv /proc/self/mounts /etc/mtab

cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
futura:x:1000:1000::/home/futura:/bin/bash
EOF

cat > /etc/group << "EOF"
root:x:0:
futura:x:1000
EOF

install -o futura -g futura -d /home/futura

localedef -i C -f UTF-8 C.UTF-8

exec /usr/bin/bash --login

touch /var/log/{btmp,lastlog,faillog,wtmp}
chgrp -v utmp /var/log/lastlog
chmod -v 664  /var/log/lastlog
chmod -v 600  /var/log/btmp

# 7.7. Gettext-0.22.5
tar xf gettext-0.22.5.tar.xz
cd gettext-0.22.5
./configure --prefix=/usr            \
            --disable-shared         \
            --libdir=/usr/lib64      \
            --{build,host}=${CHOST}
make
cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin
cd ..
rm -rf gettext-0.22.5

# 7.8. Bison-3.8.2
tar xf bison-3.8.2.tar.xz
cd bison-3.8.2
./configure --prefix=/usr                        \
            --docdir=/usr/share/doc/bison-3.8.2  \
            --libdir=/usr/lib64                  \
            --{build,host}=${CHOST}
make
make install
cd ..
rm -rf bison-3.8.2

# 7.9. Perl-5.40.0
tar xf perl-5.40.0.tar.xz
cd perl-5.40.0
sh Configure -des                                            \
             -D prefix=/usr                                  \
             -D vendorprefix=/usr                            \
             -D useshrplib                                   \
             -D privlib=/usr/lib64/perl5/5.40/core_perl      \
             -D archlib=/usr/lib64/perl5/5.40/core_perl      \
             -D sitelib=/usr/lib64/perl5/5.40/site_perl      \
             -D sitearch=/usr/lib64/perl5/5.40/site_perl     \
             -D vendorlib=/usr/lib64/perl5/5.40/vendor_perl  \
             -D vendorarch=/usr/lib64/perl5/5.40/vendor_perl \
             -D cc=${CHOST}-gcc
make
make install
cd ..
rm -rf perl-5.40.0

# libarchive-3.7.7
tar xf libarchive-3.7.7.tar.xz
cd libarchive-3.7.7
./configure --prefix=/usr               \
            --disable-static            \
            --libdir=/usr/lib64         \
            --{build,host}=${CHOST}
make
make install
cd ..
rm -rf libarchive-3.7.7

# Zlib-1.3.1
tar xf zlib-1.3.1.tar.gz
cd zlib-1.3.1
CC="${CHOST}-gcc" ./configure --prefix=/usr --libdir=/usr/lib64
make
make install
rm -fv /usr/lib64/libz.a
cd ..
rm -rf zlib-1.3.1

# OpenSSL-3.4.0
tar xf openssl-3.4.0.tar.gz
cd openssl-3.4.0
CC="${CHOST}-gcc"                \
./config --prefix=/usr           \
         --openssldir=/etc/ssl   \
         --libdir=lib64          \
         shared                  \
         zlib-dynamic            \
         linux-x86_64
make
sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
make MANSUFFIX=ssl install
cd ..
rm -rf openssl-3.4.0

# cURL-8.11.0
tar xf curl-8.11.0.tar.xz
cd curl-8.11.0
./configure --prefix=/usr               \
            --disable-static            \
            --with-openssl              \
            --without-libpsl            \
            --libdir=/usr/lib64         \
            --{build,host}=${CHOST}
make
make install
cd ..
rm -rf curl-8.11.0

# Libcap-2.71
tar xf libcap-2.71.tar.xz
cd libcap-2.71
sed -i '/install -m.*STA/d' libcap/Makefile
make CC="${CHOST}-gcc" prefix=/usr lib=lib64
make CC="${CHOST}-gcc" prefix=/usr lib=lib64 install
cd ..
rm -rf libcap-1.71

# fakeroot-1.36
tar xf fakeroot_1.36.orig.tar.gz
cd fakeroot-1.36
./configure --prefix=/usr         \
            --libdir=/usr/lib64   \
            --disable-static      \
            --with-ipc=sysv       \
            --{build,host}=${CHOST}
make
make install
cd ..
rm -rf fakeroot-1.36

# Libffi-3.4.6
tar xf libffi-3.4.6.tar.gz
cd libffi-3.4.6
./configure --prefix=/usr               \
            --disable-static            \
            --with-gcc-arch=native      \
            --disable-exec-static-tramp \
            --libdir=/usr/lib64         \
            --{build,host}=${CHOST}
make
make install
cd ..
rm -rf libffi-3.4.6

# Pkgconf-2.3.0
tar xf pkgconf-2.3.0.tar.xz
cd pkgconf-2.3.0
./configure --prefix=/usr              \
            --disable-static           \
            --docdir=/usr/share/doc/pkgconf-2.3.0 \
            --libdir=/usr/lib64        \
            --{build,host}=${CHOST} &&
make &&
make install &&
ln -sv pkgconf   /usr/bin/pkg-config
ln -sv pkgconf   /usr/bin/${CHOST}-pkg-config
ln -sv pkgconf.1 /usr/share/man/man1/pkg-config.1
cd ..
rm -rf pkgconf-2.3.0

# Python-3.13.0
tar xf Python-3.13.0.tar.xz
cd Python-3.13.0
patch -Np1 -i ../python-3.13.0-site-packages-lib64.patch
./configure --prefix=/usr           \
            --enable-shared         \
            --without-ensurepip     \
            --with-platlibdir=lib64 \
            --libdir=/usr/lib64     \
            --{build,host}=${CHOST} &&
make &&
make install
cd ..
rm -rf Python-3.13.0

# Ninja-1.12.1
tar xf ninja-1.12.1.tar.gz
cd ninja-1.12.1
python3 configure.py --bootstrap
install -vm755 ninja /usr/bin/
cd ..
rm -rf ninja-1.12.1

# Meson-1.6.0
tar xf meson-1.6.0.tar.gz
cd meson-1.6.0
cp meson.py /usr/bin/meson
cp -rv mesonbuild /usr/bin
install -vdm755 /usr/share/meson/cross
cat >  /usr/share/meson/cross/meson_crossfile << EOF
[binaries]
c = 'x86_64-futura-linux-gnu-gcc'
cpp = 'x86_64-futura-linux-gnu-g++'
ar = 'x86_64-futura-linux-gnu-gcc-ar'
nm = 'x86_64-futura-linux-gnu-gcc-nm'
ranlib = 'x86_64-futura-linux-gnu-gcc-ranlib'
pkg-config = 'x86_64-futura-linux-gnu-pkg-config'

[properties]
needs_exe_wrapper = true

[host_machine]
system = 'linux'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'

EOF
cat > /usr/bin/futura-meson << EOF
exec meson setup --cross-file=meson_crossfile "\$@"
EOF
chmod +x /usr/bin/futura-meson
cd ..
rm -rf meson-1.6.0

# pacman-7.0.0
tar xf pacman-v7.0.0.tar.gz
cd pacman-v7.0.0
futura-meson build                    \
      --prefix=/usr                   \
      --libdir=/usr/lib64             \
      --buildtype=plain               \
      -Dcrypto=openssl                \
      -Ddoc=disabled                  \
      -Dgpgme=disabled                \
      -Dscriptlet-shell=/usr/bin/bash \
      -Dldconfig=/usr/sbin/ldconfig  &&
meson compile -C build  &&
meson install -C build
cd ..
rm -rf pacman-v7.0.0

# 7.11. Texinfo-7.1.1
tar xf texinfo-7.1.1.tar.xz
cd texinfo-7.1.1
./configure --prefix=/usr         \
            --libdir=/usr/lib64   \
            --{build,host}=${CHOST} &&
make &&
make install
cd ..
rm -rf texinfo-7.1.1

# 7.12. Util-linux-2.40.2
tar xf util-linux-2.40.2.tar.xz
cd util-linux-2.40.2
mkdir -pv /var/lib/hwclock
./configure --prefix=/usr         \
            --libdir=/usr/lib64   \
            --runstatedir=/run    \
            --disable-chfn-chsh   \
            --disable-login       \
            --disable-nologin     \
            --disable-su          \
            --disable-setpriv     \
            --disable-runuser     \
            --disable-pylibmount  \
            --disable-static      \
            --disable-liblastlog2 \
            --without-python      \
            ADJTIME_PATH=/var/lib/hwclock/adjtime \
            --bindir=/usr/bin                     \
            --sbindir=/usr/sbin                   \
            --docdir=/usr/share/doc/util-linux-2.40.2 &&
make &&
make install
cd ..
rm -rf util-linux-2.40.2

# vim-9.1.0848
tar xf vim-9.1.0848.tar.gz
cd vim-9.1.0848
echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
./configure --prefix=/usr        \
            --libdir=/usr/lib64  \
            --{build,host}=${CHOST} &&
make &&
make install
cat > /etc/vimrc << "EOF"
" Begin /etc/vimrc

" Ensure defaults are set before customizing settings, not after
source $VIMRUNTIME/defaults.vim
let skip_defaults_vim=1

set nocompatible
set backspace=2
set mouse=
syntax on
if (&term == "xterm") || (&term == "putty")
  set background=dark
endif

set tabstop=4
set shiftwidth=4
set expandtab
set autoindent
set smartindent

" End /etc/vimrc
EOF
cd ..
rm -rf vim-9.1.0848

# 7.13. 清理和备份临时系统
rm -rf /usr/share/{info,man,doc}/*

find /usr/{lib64,libexec} -name \*.la -delete

rm -rf /tools

install -vdm755 /usr/share/gdb/auto-load/usr/lib64
mv -v /usr/lib64/*gdb.py /usr/share/gdb/auto-load/usr/lib64

# 7.13.2. 备份
exit
mountpoint -q /mnt/dev/shm && umount /mnt/dev/shm
umount /mnt/dev/pts
umount /mnt/{sys,proc,run,dev}

cd /mnt
tar -cJpf $HOME/futura-temp-tools-systemd-pacman-202411142247.tar.xz bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var sources/makepkg.conf sources/pacman.conf sources/futura-build-options.conf

# 7.13.3. 还原
cd /mnt
rm -rf ./*
tar -xpf $HOME/futura-temp-tools-r12.2-26-systemd-pacman.tar.xz