Builds correctly
This commit is contained in:
parent
126f61496a
commit
5885d115b1
1 changed files with 270 additions and 71 deletions
341
build.sh
341
build.sh
|
|
@ -124,10 +124,14 @@ host_toolchain() {
|
|||
|
||||
# Create a directory layout
|
||||
if [ ! -d "$LFS/etc" ]; then
|
||||
mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin,libexec,share}
|
||||
mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,share}
|
||||
mkdir -pv $LFS/{dev,proc,sys,run,tmp}
|
||||
|
||||
for i in bin lib sbin libexec; do
|
||||
# like archlinux sbin->/usr/bin
|
||||
ln -sv usr/bin $LFS/sbin
|
||||
ln -sv bin $LFS/usr/sbin
|
||||
|
||||
for i in bin lib; do
|
||||
ln -sv usr/$i $LFS/$i
|
||||
done
|
||||
fi
|
||||
|
|
@ -512,15 +516,16 @@ if [ ! -f "$STEPS_DIR/attr" ]; then
|
|||
mkdir -vp build-$LFS_TGT
|
||||
cd build-$LFS_TGT
|
||||
|
||||
echo "rootsbindir=/usr/sbin" > configparms
|
||||
echo "rootsbindir=/usr/bin" > configparms
|
||||
|
||||
"../configure" \
|
||||
--prefix=/ \
|
||||
--prefix=/usr \
|
||||
--with-sysroot=${LFS} \
|
||||
--disable-static \
|
||||
--host=$LFS_TGT
|
||||
|
||||
|
||||
make -j 32
|
||||
make DESTDIR=$LFS install
|
||||
make -j 32 DESTDIR="$LFS" install
|
||||
|
||||
cd "$BASE_DIR"
|
||||
rm -rf "$LFS_BUILD/attr"
|
||||
|
|
@ -538,11 +543,17 @@ if [ ! -f "$STEPS_DIR/zlib" ]; then
|
|||
mkdir -vp build-$LFS_TGT
|
||||
cd build-$LFS_TGT
|
||||
|
||||
export CFLAGS_old="$CFLAGS"
|
||||
export CFLAGS+=" -ffat-lto-objects"
|
||||
|
||||
"../configure" \
|
||||
--prefix=$LFS
|
||||
--prefix=/usr \
|
||||
--enable-shared
|
||||
|
||||
make -j 32
|
||||
make install
|
||||
make -j 32 DESTDIR="$LFS" install
|
||||
|
||||
export CFLAGS="$CFLAGS_old"
|
||||
|
||||
cd "$BASE_DIR"
|
||||
rm -rf "$LFS_BUILD/zlib"
|
||||
|
|
@ -582,6 +593,34 @@ if [ ! -f "$STEPS_DIR/ncurses" ]; then
|
|||
touch "$STEPS_DIR/ncurses"
|
||||
fi
|
||||
|
||||
# build readline (depends on libncurses)
|
||||
if [ ! -f "$STEPS_DIR/readline" ]; then
|
||||
if [ ! -d "$LFS_BUILD/readline" ]; then
|
||||
tar -xf "$BASE_DIR/sources/readline-8.2.13.tar.gz"
|
||||
mv "readline-8.2.13" "$LFS_BUILD/readline"
|
||||
fi
|
||||
cd "$LFS_BUILD/readline"
|
||||
|
||||
mkdir -vp build-$LFS_TGT
|
||||
cd build-$LFS_TGT
|
||||
|
||||
"../configure" \
|
||||
--with-sysroot=${LFS} \
|
||||
--host=${LFS_TGT} \
|
||||
--build=${BUILD_MACHINE_TRIPLET} \
|
||||
--prefix=/usr \
|
||||
--with-curses \
|
||||
--enable-static=no \
|
||||
--cache-file=config.cache
|
||||
|
||||
make -j 32 SHLIB_LIBS=-lncurses
|
||||
make -j 32 DESTDIR=$LFS install
|
||||
|
||||
cd "$BASE_DIR"
|
||||
rm -rf "$LFS_BUILD/readline"
|
||||
touch "$STEPS_DIR/readline"
|
||||
fi
|
||||
|
||||
# build bash
|
||||
if [ ! -f "$STEPS_DIR/bash" ]; then
|
||||
if [ ! -d "$LFS_BUILD/bash" ]; then
|
||||
|
|
@ -593,17 +632,27 @@ if [ ! -f "$STEPS_DIR/bash" ]; then
|
|||
mkdir -vp build-$LFS_TGT
|
||||
cd build-$LFS_TGT
|
||||
|
||||
# --build=${CLFS_HOST} \
|
||||
_bashconfig=(-DDEFAULT_PATH_VALUE=\'\"/usr/local/sbin:/usr/local/bin:/usr/bin\"\'
|
||||
-DSTANDARD_UTILS_PATH=\'\"/usr/bin\"\'
|
||||
-DSYS_BASHRC=\'\"/etc/bash.bashrc\"\'
|
||||
-DSYS_BASH_LOGOUT=\'\"/etc/bash.bash_logout\"\'
|
||||
-DNON_INTERACTIVE_LOGIN_SHELLS)
|
||||
export CFLAGS_old="$CFLAGS"
|
||||
export CFLAGS="${CFLAGS} ${_bashconfig[@]}"
|
||||
|
||||
"../configure" \
|
||||
--prefix=$LFS \
|
||||
--prefix=/usr \
|
||||
--host=${LFS_TGT} \
|
||||
--build=${BUILD_MACHINE_TRIPLET} \
|
||||
--without-bash-malloc \
|
||||
--enable-threads \
|
||||
--enable-readline \
|
||||
--with-curses
|
||||
|
||||
make -j 32
|
||||
make install
|
||||
make -j 32 DESTDIR="$LFS" install
|
||||
|
||||
export CFLAGS="$CFLAGS_old"
|
||||
|
||||
cd "$BASE_DIR"
|
||||
rm -rf "$LFS_BUILD/bash"
|
||||
|
|
@ -619,7 +668,7 @@ if [ ! -f "$STEPS_DIR/bzip2" ]; then
|
|||
cd "$LFS_BUILD/bzip2"
|
||||
|
||||
#make
|
||||
make CC="${CC} ${CFLAGS}" AR="${AR}" RANLIB="${RANLIB}" LD="${LD} ${LDFLAGS}" -j 32 PREFIX=$LFS install
|
||||
make CC="${CC} ${CFLAGS}" AR="${AR}" RANLIB="${RANLIB}" LD="${LD} ${LDFLAGS}" -j 32 PREFIX="$LFS/usr" install
|
||||
|
||||
if [ -f "$LFS/bin/bzip2" ]; then
|
||||
"$LFS_TGT-strip" --strip-unneeded "$LFS/bin/bzip2"
|
||||
|
|
@ -673,14 +722,15 @@ if [ ! -f "$STEPS_DIR/coreutils" ]; then
|
|||
cd build-$LFS_TGT
|
||||
|
||||
"../configure" \
|
||||
--prefix=$LFS \
|
||||
--prefix=/usr \
|
||||
--libexecdir=/usr/lib \
|
||||
--host=${LFS_TGT} \
|
||||
--build=${BUILD_MACHINE_TRIPLET} \
|
||||
--enable-install-program=hostname \
|
||||
--cache-file=config.cache
|
||||
|
||||
make -j 32
|
||||
make -j 32 install
|
||||
make -j 32 DESTDIR="$LFS" install
|
||||
|
||||
cd "$BASE_DIR"
|
||||
rm -rf "$LFS_BUILD/coreutils"
|
||||
|
|
@ -713,6 +763,31 @@ if [ ! -f "$STEPS_DIR/diffutils" ]; then
|
|||
touch "$STEPS_DIR/diffutils"
|
||||
fi
|
||||
|
||||
# build libseccomp
|
||||
if [ ! -f "$STEPS_DIR/libseccomp" ]; then
|
||||
if [ ! -d "$LFS_BUILD/libseccomp" ]; then
|
||||
tar -xf "$BASE_DIR/sources/libseccomp-2.5.5.tar.gz"
|
||||
mv "libseccomp-2.5.5" "$LFS_BUILD/libseccomp"
|
||||
fi
|
||||
cd "$LFS_BUILD/libseccomp"
|
||||
|
||||
mkdir -vp build-$LFS_TGT
|
||||
cd build-$LFS_TGT
|
||||
|
||||
"../configure" \
|
||||
--prefix=/usr \
|
||||
--host=${LFS_TGT} \
|
||||
--build=${BUILD_MACHINE_TRIPLET} \
|
||||
--cache-file=config.cache
|
||||
|
||||
make -j 32
|
||||
make -j 32 DESTDIR="$LFS" install
|
||||
|
||||
cd "$BASE_DIR"
|
||||
rm -rf "$LFS_BUILD/libseccomp"
|
||||
touch "$STEPS_DIR/libseccomp"
|
||||
fi
|
||||
|
||||
# build file
|
||||
if [ ! -f "$STEPS_DIR/file" ]; then
|
||||
if [ ! -d "$LFS_BUILD/file" ]; then
|
||||
|
|
@ -725,13 +800,17 @@ if [ ! -f "$STEPS_DIR/file" ]; then
|
|||
cd build-$LFS_TGT
|
||||
|
||||
"../configure" \
|
||||
--prefix=$LFS \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/lib \
|
||||
--datadir=/usr/share/file \
|
||||
--with-sysroot=$LFS \
|
||||
--host=${LFS_TGT} \
|
||||
--build=${BUILD_MACHINE_TRIPLET} \
|
||||
--libdir=$LFS/lib
|
||||
--enable-libseccomp \
|
||||
--cache-file=config.cache
|
||||
|
||||
make -j 32
|
||||
make -j 32 install
|
||||
make -j 32 DESTDIR="$LFS" install
|
||||
|
||||
cd "$BASE_DIR"
|
||||
rm -rf "$LFS_BUILD/file"
|
||||
|
|
@ -753,13 +832,13 @@ if [ ! -f "$STEPS_DIR/findutils" ]; then
|
|||
echo "ac_cv_func_fnmatch_gnu=yes" >> config.cache
|
||||
|
||||
"../configure" \
|
||||
--prefix=$LFS \
|
||||
--prefix=/usr \
|
||||
--host=${LFS_TGT} \
|
||||
--build=${BUILD_MACHINE_TRIPLET} \
|
||||
--cache-file=config.cache
|
||||
|
||||
make -j 32
|
||||
make -j 32 install
|
||||
make -j 32 DESTDIR="$LFS" install
|
||||
|
||||
cd "$BASE_DIR"
|
||||
rm -rf "$LFS_BUILD/findutils"
|
||||
|
|
@ -778,16 +857,16 @@ if [ ! -f "$STEPS_DIR/gawk" ]; then
|
|||
cd build-$LFS_TGT
|
||||
|
||||
"../configure" \
|
||||
--prefix=$LFS/usr \
|
||||
--libexecdir=$LFS/usr/lib \
|
||||
--sysconfdir=$LFS/etc \
|
||||
--prefix=/usr \
|
||||
--libexecdir=/usr/lib \
|
||||
--sysconfdir=/etc \
|
||||
--host=${LFS_TGT} \
|
||||
--build=${BUILD_MACHINE_TRIPLET} \
|
||||
--without-libsigsegv \
|
||||
--cache-file=config.cache
|
||||
|
||||
make -j 32
|
||||
make -j 32 install
|
||||
make -j 32 DESTDIR="$LFS" install
|
||||
|
||||
"$STRIP" --strip-unneeded "$LFS/bin/gawk"
|
||||
|
||||
|
|
@ -808,14 +887,14 @@ if [ ! -f "$STEPS_DIR/grep" ]; then
|
|||
cd build-$LFS_TGT
|
||||
|
||||
"../configure" \
|
||||
--prefix=$LFS \
|
||||
--prefix=/usr \
|
||||
--host=${LFS_TGT} \
|
||||
--build=${BUILD_MACHINE_TRIPLET} \
|
||||
--without-included-regex \
|
||||
--cache-file=config.cache
|
||||
|
||||
make -j 32
|
||||
make -j 32 install
|
||||
make -j 32 DESTDIR="$LFS" install
|
||||
|
||||
"$STRIP" --strip-unneeded "$LFS/bin/grep"
|
||||
|
||||
|
|
@ -863,13 +942,13 @@ if [ ! -f "$STEPS_DIR/make" ]; then
|
|||
cd build-$LFS_TGT
|
||||
|
||||
"../configure" \
|
||||
--prefix=$LFS \
|
||||
--prefix=/usr \
|
||||
--host=${LFS_TGT} \
|
||||
--build=${BUILD_MACHINE_TRIPLET} \
|
||||
--cache-file=config.cache
|
||||
|
||||
make -j 32
|
||||
make -j 32 install
|
||||
make -j 32 DESTDIR="$LFS" install
|
||||
|
||||
cd "$BASE_DIR"
|
||||
rm -rf "$LFS_BUILD/make"
|
||||
|
|
@ -943,13 +1022,15 @@ if [ ! -f "$STEPS_DIR/sed" ]; then
|
|||
cd build-$LFS_TGT
|
||||
|
||||
"../configure" \
|
||||
--prefix=$LFS \
|
||||
--prefix=/usr \
|
||||
--host=${LFS_TGT} \
|
||||
--build=${BUILD_MACHINE_TRIPLET} \
|
||||
--cache-file=config.cache
|
||||
|
||||
|
||||
make -j 32 install
|
||||
make -j 32
|
||||
make -j 32 DESTDIR="$LFS" install
|
||||
|
||||
"$LFS_TGT-strip" --strip-unneeded "$LFS/bin/sed"
|
||||
|
||||
cd "$BASE_DIR"
|
||||
rm -rf "$LFS_BUILD/sed"
|
||||
|
|
@ -983,15 +1064,18 @@ if [ ! -f "$STEPS_DIR/tar" ]; then
|
|||
#EOF
|
||||
|
||||
"../configure" \
|
||||
--prefix=$LFS \
|
||||
--prefix=/usr \
|
||||
--sbindir=/usr/bin \
|
||||
--libexecdir=/usr/lib/tar \
|
||||
--host=${LFS_TGT} \
|
||||
--build=${BUILD_MACHINE_TRIPLET} \
|
||||
--enable-backup-scripts \
|
||||
--cache-file=config.cache
|
||||
|
||||
make -j 32
|
||||
make -j 32 install
|
||||
make -j 32 DESTDIR="$LFS" install
|
||||
|
||||
"$LFS_TGT-strip" --strip-unneeded $LFS/bin/tar
|
||||
"$LFS_TGT-strip" --strip-unneeded "$LFS/bin/tar"
|
||||
|
||||
export LDFLAGS="$LDFLAGS_old"
|
||||
|
||||
|
|
@ -1037,39 +1121,6 @@ fi
|
|||
#fi
|
||||
#exit 0
|
||||
|
||||
|
||||
# build gettext
|
||||
if [ ! -f "$STEPS_DIR/gettext" ]; then
|
||||
if [ ! -d "$LFS_BUILD/gettext" ]; then
|
||||
tar -xf "$BASE_DIR/sources/gettext-0.23.tar.gz"
|
||||
mv "gettext-0.23" "$LFS_BUILD/gettext"
|
||||
fi
|
||||
cd "$LFS_BUILD/gettext"
|
||||
|
||||
#EMACS="no" autoreconf -fi
|
||||
|
||||
mkdir -vp build-$LFS_TGT
|
||||
cd build-$LFS_TGT
|
||||
|
||||
EMACS="no" "../configure" \
|
||||
--prefix=$LFS \
|
||||
--host=${LFS_TGT} \
|
||||
--build=${BUILD_MACHINE_TRIPLET} \
|
||||
--disable-shared \
|
||||
--libdir=$LFS/usr/lib \
|
||||
--with-sysroot=$SYSROOT \
|
||||
--enable-curses \
|
||||
--cache-file=config.cache
|
||||
|
||||
|
||||
make -j 32
|
||||
make -j 32 install
|
||||
|
||||
cd "$BASE_DIR"
|
||||
rm -rf "$LFS_BUILD/gettext"
|
||||
touch "$STEPS_DIR/gettext"
|
||||
fi
|
||||
|
||||
# build xz-utils
|
||||
if [ ! -f "$STEPS_DIR/xz" ]; then
|
||||
if [ ! -d "$LFS_BUILD/xz" ]; then
|
||||
|
|
@ -1094,11 +1145,48 @@ if [ ! -f "$STEPS_DIR/xz" ]; then
|
|||
# Remove the libtool archive file because it is harmful for cross compilation
|
||||
#rm -v $LFS/usr/lib/liblzma.la
|
||||
|
||||
"$LFS_TGT-strip" --strip-unneeded "$LFS/bin/xz"
|
||||
"$LFS_TGT-strip" --strip-unneeded "$LFS/bin/xzdec"
|
||||
"$LFS_TGT-strip" --strip-unneeded "$LFS/bin/xzcat"
|
||||
|
||||
cd "$BASE_DIR"
|
||||
rm -rf "$LFS_BUILD/xz"
|
||||
touch "$STEPS_DIR/xz"
|
||||
fi
|
||||
|
||||
# build gettext
|
||||
if [ ! -f "$STEPS_DIR/gettext" ]; then
|
||||
if [ ! -d "$LFS_BUILD/gettext" ]; then
|
||||
tar -xf "$BASE_DIR/sources/gettext-0.23.tar.gz"
|
||||
mv "gettext-0.23" "$LFS_BUILD/gettext"
|
||||
fi
|
||||
cd "$LFS_BUILD/gettext"
|
||||
|
||||
#EMACS="no" autoreconf -fi
|
||||
|
||||
mkdir -vp build-$LFS_TGT
|
||||
cd build-$LFS_TGT
|
||||
|
||||
EMACS="no" "../configure" \
|
||||
--prefix=/usr \
|
||||
--host=${LFS_TGT} \
|
||||
--build=${BUILD_MACHINE_TRIPLET} \
|
||||
--disable-shared \
|
||||
--libdir=/usr/lib \
|
||||
--with-sysroot=$SYSROOT \
|
||||
--enable-curses \
|
||||
--with-xz \
|
||||
--cache-file=config.cache
|
||||
|
||||
|
||||
make -j 32
|
||||
make -j 32 DESTDIR="$LFS" install
|
||||
|
||||
cd "$BASE_DIR"
|
||||
rm -rf "$LFS_BUILD/gettext"
|
||||
touch "$STEPS_DIR/gettext"
|
||||
fi
|
||||
|
||||
# build acl
|
||||
if [ ! -f "$STEPS_DIR/acl" ]; then
|
||||
if [ ! -d "$LFS_BUILD/acl" ]; then
|
||||
|
|
@ -1112,25 +1200,136 @@ if [ ! -f "$STEPS_DIR/acl" ]; then
|
|||
|
||||
"../configure" \
|
||||
--prefix=/usr \
|
||||
--libexecdir=/usr/libexec \
|
||||
--libexecdir=/usr/lib \
|
||||
--libdir=/usr/lib \
|
||||
--with-sysroot=${LFS} \
|
||||
--host=${LFS_TGT} \
|
||||
--build=${BUILD_MACHINE_TRIPLET} \
|
||||
--with-sysroot=$LFS \
|
||||
--disable-static \
|
||||
--cache-file=config.cache
|
||||
|
||||
make -j 32
|
||||
make -j 32 DESTDIR=$LFS install
|
||||
|
||||
# Remove the libtool archive file because it is harmful for cross compilation
|
||||
#rm -v $LFS/usr/lib/liblzma.la
|
||||
|
||||
cd "$BASE_DIR"
|
||||
rm -rf "$LFS_BUILD/acl"
|
||||
touch "$STEPS_DIR/acl"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
# build pcre2
|
||||
if [ ! -f "$STEPS_DIR/pcre2" ]; then
|
||||
if [ ! -d "$LFS_BUILD/pcre2" ]; then
|
||||
tar -xf "$BASE_DIR/sources/pcre2-10.44.tar.bz2"
|
||||
mv "pcre2-10.44" "$LFS_BUILD/pcre2"
|
||||
fi
|
||||
cd "$LFS_BUILD/pcre2"
|
||||
|
||||
mkdir -vp build-$LFS_TGT
|
||||
cd build-$LFS_TGT
|
||||
|
||||
export CFLAGS_old="$CFLAGS"
|
||||
export CXXFLAGS_old="$CXXFLAGS"
|
||||
# use fat LTO objects for static libraries
|
||||
CFLAGS+=" -ffat-lto-objects"
|
||||
CXXFLAGS+=" -ffat-lto-objects"
|
||||
|
||||
"../configure" \
|
||||
--with-sysroot=${LFS} \
|
||||
--host=${LFS_TGT} \
|
||||
--build=${BUILD_MACHINE_TRIPLET} \
|
||||
--prefix=/usr \
|
||||
--enable-jit \
|
||||
--enable-pcre2-16 \
|
||||
--enable-pcre2-32 \
|
||||
--enable-pcre2grep-libbz2 \
|
||||
--enable-pcre2grep-libz \
|
||||
--enable-pcre2test-libreadline \
|
||||
--prefix=/usr \
|
||||
--cache-file=config.cache
|
||||
|
||||
make -j 32
|
||||
make -j 32 DESTDIR=$LFS install
|
||||
|
||||
cd "$BASE_DIR"
|
||||
rm -rf "$LFS_BUILD/pcre2"
|
||||
touch "$STEPS_DIR/pcre2"
|
||||
fi
|
||||
|
||||
# build libcap-ng (needs swig)
|
||||
if [ ! -f "$STEPS_DIR/libcap-ng" ]; then
|
||||
if [ ! -d "$LFS_BUILD/libcap-ng" ]; then
|
||||
tar -xf "$BASE_DIR/sources/libcap-ng-0.8.5.tar.gz"
|
||||
mv "libcap-ng-0.8.5" "$LFS_BUILD/libcap-ng"
|
||||
fi
|
||||
cd "$LFS_BUILD/libcap-ng"
|
||||
|
||||
autoreconf -fiv
|
||||
|
||||
mkdir -vp build-$LFS_TGT
|
||||
cd build-$LFS_TGT
|
||||
|
||||
# --enable-zos-remote requires libldap
|
||||
"../configure" \
|
||||
--with-sysroot=${LFS} \
|
||||
--host=${LFS_TGT} \
|
||||
--build=${BUILD_MACHINE_TRIPLET} \
|
||||
--prefix="/usr" \
|
||||
--without-python \
|
||||
--without-python3 \
|
||||
--enable-static=no \
|
||||
--cache-file=config.cache
|
||||
|
||||
make -j 32
|
||||
make -j 32 DESTDIR=$LFS install
|
||||
|
||||
cd "$BASE_DIR"
|
||||
rm -rf "$LFS_BUILD/libcap-ng"
|
||||
touch "$STEPS_DIR/libcap-ng"
|
||||
fi
|
||||
exit 0
|
||||
# build audit
|
||||
if [ ! -f "$STEPS_DIR/audit-userspace" ]; then
|
||||
if [ ! -d "$LFS_BUILD/audit-userspace" ]; then
|
||||
tar -xf "$BASE_DIR/sources/audit-userspace-4.0.2.tar.gz"
|
||||
mv "audit-userspace-4.0.2" "$LFS_BUILD/audit-userspace"
|
||||
fi
|
||||
cd "$LFS_BUILD/audit-userspace"
|
||||
|
||||
autoreconf -fiv
|
||||
|
||||
mkdir -vp build-$LFS_TGT
|
||||
cd build-$LFS_TGT
|
||||
|
||||
# --enable-zos-remote requires libldap
|
||||
"../configure" \
|
||||
--with-sysroot=${LFS} \
|
||||
--host=${LFS_TGT} \
|
||||
--build=${BUILD_MACHINE_TRIPLET} \
|
||||
--enable-gssapi-krb5=no \
|
||||
--enable-systemd=no \
|
||||
--disable-zos-remote \
|
||||
--libexecdir=/usr/lib/audit \
|
||||
--prefix=/usr \
|
||||
--runstatedir=/run \
|
||||
--sbindir=/usr/bin \
|
||||
--sysconfdir=/etc \
|
||||
--with-apparmor=yes \
|
||||
--with-io_uring=yes \
|
||||
--with-libcap-ng=yes \
|
||||
--with-python3=no \
|
||||
--disable-static \
|
||||
--cache-file=config.cache
|
||||
|
||||
make -j 32
|
||||
make -j 32 DESTDIR=$LFS install
|
||||
|
||||
cd "$BASE_DIR"
|
||||
rm -rf "$LFS_BUILD/audit-userspace"
|
||||
touch "$STEPS_DIR/audit-userspace"
|
||||
fi
|
||||
|
||||
# Postpone texinfo
|
||||
exit 0
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue