FreonLinux/build-extensions

1667 lines
29 KiB
Bash
Executable File

#!/bin/bash
# Build Freon Linux software from source.
# Version: 0.6.0
# (C) Chris Dorman, 2018-2020 GPLv3+
corecount="25"
#### Variables ###
# mirrors
mpfrmirror="https://ftp.gnu.org/gnu/mpfr"
mpcmirror="https://ftp.gnu.org/gnu/mpc"
gmpmirror="https://ftp.gnu.org/gnu/gmp"
binutilsmirror="https://ftp.gnu.org/gnu/binutils"
gccmirror="http://ftp.gnu.org/gnu/gcc/gcc-9.2.0"
nanomirror="https://www.nano-editor.org/dist/v3"
chttpdmirror="https://github.com/Pentium44/chttpd.git"
ftpmirror="https://github.com/Harlonxl/minFTPD.git"
harfbuzzmirror="http://deb.debian.org/debian/pool/main/h/harfbuzz"
ncursesmirror="https://ftp.gnu.org/pub/gnu/ncurses"
bashmirror="https://ftp.gnu.org/gnu/bash"
zlibmirror="https://zlib.net"
termcapmirror="https://ftp.gnu.org/gnu/termcap"
htopmirror="https://github.com/htop-dev/htop/archive"
islmirror="http://isl.gforge.inria.fr"
irciimirror="http://ircii.warped.com"
opensslmirror="https://www.openssl.org/source"
xlibmirror="https://www.x.org/archive/individual/lib"
xcbmirror="https://www.x.org/archive/individual/xcb"
libbsdmirror="https://libbsd.freedesktop.org/releases"
bz2mirror="https://sourceware.org/pub/bzip2"
freetypemirror="https://download.savannah.gnu.org/releases/freetype"
png16mirror="https://download.sourceforge.net/libpng"
stracemirror="https://gitlab.com/strace/strace.git"
elfutilsmirror="git://sourceware.org/git/elfutils.git"
gtk2mirror="https://download.gnome.org/sources/gtk+/2.24"
netsurfmirror="http://download.netsurf-browser.org/netsurf/releases/source-full"
xfemirror="https://netactuate.dl.sourceforge.net/project/xfe/xfe/1.43.2"
pangomirror="https://download.gnome.org/sources/pango/1.42"
fontconfigmirror="https://www.freedesktop.org/software/fontconfig/release"
hexchatmirror="https://dl.hexchat.net/hexchat"
pcmanfmmirror="https://downloads.sourceforge.net/pcmanfm"
idnmirror="https://ftp.gnu.org/gnu/libidn"
lynxmirror="https://invisible-mirror.net/archives/lynx/tarballs"
expatmirror="https://github.com/libexpat/libexpat/releases/download/R_2_2_7"
utillinuxmirror="https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.33"
foxmirror="ftp://ftp.fox-toolkit.org/pub"
glib2mirror="https://download.gnome.org/sources/glib/2.56"
cairomirror="https://www.cairographics.org/releases"
gdkpixbufmirror="http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.36"
atkmirror="http://ftp.gnome.org/pub/gnome/sources/atk/2.26"
gobjectintromirror="http://ftp.gnome.org/pub/gnome/sources/gobject-introspection/1.54"
selinuxmirror="http://deb.debian.org/debian/pool/main/libs/libselinux"
ffimirror="https://sourceware.org/ftp/libffi"
pcremirror="https://downloads.sourceforge.net/pcre"
fmmirror="https://downloads.sourceforge.net/pcmanfm"
menucachemirror="https://downloads.sourceforge.net/lxde"
notifymirror="http://ftp.gnome.org/pub/gnome/sources/libnotify/0.7"
fribidimirror="https://github.com/fribidi/fribidi/releases/download/v1.0.1"
saircdmirror="https://github.com/rg3/saircd"
sqlitemirror="https://www.sqlite.org/2020"
# filenames
gcc="gcc-9.2.0.tar.xz"
nano="nano-3.1.tar.xz"
ncurses="ncurses-6.1.tar.gz"
bash="bash-5.0.tar.gz"
zlib="zlib-1.2.11.tar.xz"
termcap="termcap-1.3.1.tar.gz"
htop="htop-2.2.0.tar.gz"
binutils="binutils-2.31.1.tar.xz"
gmp="gmp-6.1.2.tar.xz"
mpfr="mpfr-4.0.2.tar.xz"
mpc="mpc-1.1.0.tar.gz"
isl="isl-0.19.tar.xz"
ircii="ircii-20190117.tar.gz"
openssl="openssl-1.1.1h.tar.gz"
libbsd="libbsd-0.9.1.tar.xz"
bz2="bzip2-1.0.8.tar.gz"
freetype="freetype-2.10.4.tar.xz"
png16="libpng-1.6.37.tar.xz"
gtk2="gtk+-2.24.32.tar.xz"
netsurf="netsurf-all-3.10.tar.gz"
xcb="libxcb-1.13.tar.gz"
xcbutil="xcb-util-0.4.0.tar.gz"
xcbproto="xcb-proto-1.13.tar.gz"
xfe="xfe-1.43.2.tar.gz"
pango="pango-1.42.4.tar.xz"
fontconfig="fontconfig-2.13.1.tar.bz2"
hexchat="hexchat-2.12.4.tar.xz"
pcmanfm="pcmanfm-1.3.1.tar.xz"
lynx="lynx2.8.9rel.1.tar.gz"
idn="libidn-1.36.tar.gz"
expat="expat-2.2.7.tar.xz"
utillinux="util-linux-2.33.2.tar.xz"
fox="fox-1.6.57.tar.gz"
glib2="glib-2.56.4.tar.xz"
gobjectintro="gobject-introspection-1.54.1.tar.xz"
gdkpixbuf="gdk-pixbuf-2.36.11.tar.xz"
cairo="cairo-1.14.12.tar.xz"
pixman="pixman-0.34.0.tar.gz"
atk="atk-2.26.1.tar.xz"
pcre="pcre-8.43.tar.bz2"
selinux="libselinux_2.8.orig.tar.gz"
fm="libfm-1.2.5.tar.xz"
ffi="libffi-3.2.1.tar.gz"
menucache="menu-cache-1.1.0.tar.xz"
notify="libnotify-0.7.6.tar.xz"
fribidi="fribidi-1.0.1.tar.bz2"
harfbuzz="harfbuzz_2.3.1.orig.tar.bz2"
sqlite="sqlite-autoconf-3340000.tar.gz"
# work directories
tmpdir="`pwd`/pkgsrc"
softwaredir="`pwd`/src/rootfs"
freondir="/freon"
systemdir="`pwd`/system"
# source directories
gccsrcdir=${gcc//.tar.xz}
nanosrcdir=${nano//.tar.xz}
ncursessrcdir=${ncurses//.tar.gz}
bashsrcdir=${bash//.tar.gz}
zlibsrcdir=${zlib//.tar.xz}
termcapsrcdir=${termcap//.tar.gz}
htopsrcdir=${htop//.tar.gz}
mpcsrcdir=${mpc//.tar.gz}
mpfrsrcdir=${mpfr//.tar.xz}
binutilssrcdir=${binutils//.tar.xz}
gmpsrcdir=${gmp//.tar.xz}
islsrcdir=${isl//.tar.xz}
irciisrcdir=${ircii//.tar.gz}
opensslsrcdir=${openssl//.tar.gz}
libbsdsrcdir=${libbsd//.tar.xz}
bz2srcdir=${bz2//.tar.gz}
freetypesrcdir=${freetype//.tar.xz}
png16srcdir=${png16//.tar.xz}
fontmiscsrcdir=${fontmisc//.tar.bz2}
font75dpisrcdir=${font75dpi//.tar.bz2}
font100dpisrcdir=${font100dpi//.tar.bz2}
gtk2srcdir=${gtk2//.tar.xz}
netsurfsrcdir=${netsurf//.tar.gz}
xfesrcdir=${xfe//.tar.gz}
pangosrcdir=${pango//.tar.xz}
fontconfigsrcdir=${fontconfig//.tar.bz2}
hexchatsrcdir=${hexchat//.tar.xz}
pcmanfmsrcdir=${pcmanfm//.tar.xz}
lynxsrcdir=${lynx//.tar.gz}
idnsrcdir=${idn//.tar.gz}
xcbsrcdir=${xcb//.tar.gz}
xcbutilsrcdir=${xcbutil//.tar.gz}
xcbprotosrcdir=${xcbproto//.tar.gz}
expatsrcdir=${expat//.tar.xz}
utillinuxsrcdir=${utillinux//.tar.xz}
foxsrcdir=${fox//.tar.gz}
glib2srcdir=${glib2//.tar.xz}
gdkpixbufsrcdir=${gdkpixbuf//.tar.xz}
cairosrcdir=${cairo//.tar.xz}
pixmansrcdir=${pixman//.tar.gz}
atksrcdir=${atk//.tar.xz}
gobjectintrosrcdir=${gobjectintro//.tar.xz}
ffisrcdir=${ffi//.tar.gz}
pcresrcdir=${pcre//.tar.bz2}
selinuxsrcdir=${selinux//.orig.tar.gz}
fmsrcdir=${fm//.tar.xz}
menucachesrcdir=${menucache//.tar.xz}
notifysrcdir=${notify//.tar.xz}
fribidisrcdir=${fribidi//.tar.bz2}
harfbuzzsrcdir=${harfbuzz//.tar.bz2}
sqlitesrcdir=${sqlite//.tar.gz}
if [ ! -d "$tmpdir" ]; then
echo "Warning: package source directory not found, creating."
mkdir $tmpdir > /dev/null 2>&1
fi
bash()
{
cd $tmpdir
# Downloading TCC source
if [ ! -f "$bash" ]; then
echo "Downloading bash sources..."
wget $bashmirror/$bash
tar -xf $bash
fi
cd $bashsrcdir
./configure --prefix=$freondir --without-bash-malloc
make -j$corecount
make install
cd ..
}
gcc()
{
cd $tmpdir
# Downloading GCC source
if [ ! -f "$gcc" ]; then
echo "Downloading GCC sources..."
wget $gccmirror/$gcc
tar -xf $gcc
fi
cd $gccsrcdir
mkdir -v build
cd build
SED=sed
../configure --prefix=$freondir \
--enable-languages=c,c++ \
--disable-multilib \
--disable-bootstrap \
--with-system-zlib
# Compile
make -j$corecount
make install
cd $softwaredir
if [ ! -d "freon-ext" ]; then
mkdir freon-ext
fi
cd freon-ext
cp -a $freondir/. .
rm lib/*.a
rm lib64/*.a
cd $tmpdir
}
htop()
{
cd $tmpdir
# Downloading TCC source
if [ ! -f "$htop" ]; then
echo "Downloading htop sources..."
wget $htopmirror/2.2.0.tar.gz
mv 2.2.0.tar.gz $htop
tar -xf $htop
fi
# Configure TCC
cd $htopsrcdir
./autogen.sh
./configure --prefix=$freondir
# Compile
make -j20
make install
cd ..
}
termcap()
{
cd $tmpdir
# Downloading termcap source
if [ ! -f "$termcap" ]; then
echo "Downloading termcap sources..."
wget $termcapmirror/$termcap
tar -xf $termcap
fi
# Configure TCC
cd $termcapsrcdir
./configure --prefix=$freondir --with-shared --without-normal
# Compile
make -j20
make install
cd ..
}
nano()
{
cd $tmpdir
# Downloading nano source
if [ ! -f "$nano" ]; then
echo "Downloading nano editor sources..."
wget $nanomirror/$nano
tar -xf $nano
fi
# Configure
cd $nanosrcdir
./configure --prefix=$freondir
# Compile
make -j20
make install
cd ..
}
nanoircd()
{
cd $systemdir/nanoircd
# Compile
make
mkdir -p /freon/sbin
mkdir -p /freon/etc/init.d
make install
chmod +x /freon/etc/init.d/nanoircd
cd $tmpdir
}
saircd()
{
cd $tmpdir
git clone $saircdmirror
cd saircd
# Compile
make
mkdir -p $freondir/sbin
mkdir -p $freondir/etc/init.d
cp saircd $freondir/sbin
cp extra/default-saircd.conf $freondir/etc/saircd.conf
cp extra/rc.saircd $freondir/etc/init.d/saircd
chmod +x $freondir/etc/init.d/saircd
cd $tmpdir
}
sqlite3()
{
cd $tmpdir
# Downloading php7 source
if [ ! -f "$sqlite" ]; then
echo "Downloading sqlite sources..."
wget $sqlitemirror/$sqlite
tar -xf $sqlite
fi
cd $sqlitesrcdir
# Compile
./configure --prefix=$freondir \
--disable-static \
CFLAGS="-g -O2 \
-DSQLITE_ENABLE_FTS3=1 \
-DSQLITE_ENABLE_FTS4=1 \
-DSQLITE_ENABLE_COLUMN_METADATA=1 \
-DSQLITE_ENABLE_UNLOCK_NOTIFY=1 \
-DSQLITE_ENABLE_DBSTAT_VTAB=1 \
-DSQLITE_SECURE_DELETE=1 \
-DSQLITE_ENABLE_FTS3_TOKENIZER=1" &&
make
make install
cd $tmpdir
}
php7()
{
cd $tmpdir
# Downloading php7 source
if [ ! -f "$php7" ]; then
echo "Downloading php7 sources..."
wget $php7mirror/$php7
tar -xf $php7
fi
# Confingure
cd $php7srcdir
./configure --prefix=$freondir \
--sysconfdir=/freon/etc \
--localstatedir=/freon/var \
--datadir=/freon/share/php \
--mandir=/freon/share/man \
--with-config-file-path=/etc &&
# Compile
make -j20
make install
install -v -m644 php.ini-production /etc/php.ini &&
install -v -m755 -d /freon/share/doc/php-7.2.9 &&
install -v -m644 CODING_STANDARDS EXTENSIONS INSTALL NEWS README* UPGRADING* php.gif \
/freon/share/doc/php-7.2.9 &&
ln -v -sfn /freon/lib/php/doc/Archive_Tar/docs/Archive_Tar.txt \
/freon/share/doc/php-7.2.9 &&
ln -v -sfn /freon/lib/php/doc/Structures_Graph/docs \
/freon/share/doc/php-7.2.9
cd ..
}
ncurses()
{
cd $tmpdir
# Downloading nano source
if [ ! -f "$ncurses" ]; then
echo "Downloading ncurses sources..."
wget $ncursesmirror/$ncurses
tar -xf $ncurses
fi
# Configure
cd $ncursessrcdir
./configure --prefix=$freondir \
--with-shared \
--without-debug \
--without-normal \
--enable-widec
# Compile
make -j$corecount
make install
make distclean
./configure --prefix=$freondir \
--with-shared \
--without-normal \
--without-debug \
--without-cxx-binding \
--with-abi-version=5 \
--with-versioned-syms
make sources libs
cp -av lib/lib*.so.5* $freondir/lib
cd $freondir/lib
ln -s libncursesw.so.6 libtinfo.so.6
ln -s libtinfo.so.6 libtinfo.so
ln -s libncurses.so.5 libtinfo.so.5
ln -s libtinfo.so.5 libtinfo.so
ln -s libncursesw.so.6 libncursesw.so.5
cd $tmpdir
}
binutils()
{
cd $tmpdir
# Downloading binutils sources
if [ ! -f "$binutils" ]; then
echo "Downloading binutils sources..."
wget $binutilsmirror/$binutils
tar -xf $binutils
fi
# Configure Binutils
if [ ! -d "${binutilssrcdir}-build" ]; then
mkdir ${binutilssrcdir}-build
fi
cd ${binutilssrcdir}-build
../$binutilssrcdir/configure --prefix=$freondir --enable-shared
make tooldir=$freondir -j$corecount
make tooldir=$freondir install
cp -v ../$binutilssrcdir/include/libiberty.h $freondir/include
cd $tmpdir
}
mpc()
{
cd $tmpdir
# Download sources
if [ ! -f "$mpc" ]; then
echo "Downloading GNU mpc sources..."
wget $mpcmirror/$mpc
tar -xf $mpc
fi
cd $mpcsrcdir
./configure --prefix=$freondir --disable-static
make -j$corecount
make install
cd $tmpdir
}
mpfr()
{
cd $tmpdir
# Download sources
if [ ! -f "$mpfr" ]; then
echo "Downloading GNU mpfr sources..."
wget $mpfrmirror/$mpfr
tar -xf $mpfr
fi
# Configure and compile
cd $mpfrsrcdir
./configure --prefix=$freondir --disable-static --enable-thread-safe
make -j$corecount
make install
cd ..
}
gmp()
{
cd $tmpdir
# Download sources
if [ ! -f "$gmp" ]; then
echo "Downloading GNU gmp sources..."
wget $gmpmirror/$gmp
tar -xf $gmp
fi
# Configure and compile
cd $gmpsrcdir
./configure --prefix=$freondir --disable-static --enable-cxx
make -j$corecount
make install
cd ..
}
ftp()
{
cd $tmpdir
if [ ! -d "minFTPD" ]; then
git clone $ftpmirror
fi
cd minFTPD
make -j20
cp minFTPD ../../src/rootfs/sbin/
cp miniFTPD.conf ../../src/rootfs/etc/
cd $tmpdir
}
isl()
{
cd $tmpdir
# Download sources
if [ ! -f "$isl" ]; then
echo "Downloading ISL sources..."
wget $islmirror/$isl
tar -xf $isl
fi
# Configure and compile
cd $islsrcdir
./configure --prefix=$freondir
make -j$corecount
make install
cd ..
}
# IRC clients / servers
# Because why not! :D / BitchX has pissed me off
ircii()
{
cd $tmpdir
# Grab latest sources ircII
if [ ! -d $irciisrcdir ]; then
wget $irciimirror/$ircii
tar -xf $ircii
fi
cd $irciisrcdir
# Configure and build + install
./configure --prefix=$freondir
make -j20
make install
cd $tmpdir
}
# OpenSSL, needed for ircii TLS/SSL, and probably a bit more packages in the future.
openssl()
{
cd $tmpdir
# Grab latest sources ircII
if [ ! -d $opensslsrcdir ]; then
wget $opensslmirror/$openssl
tar -xf $openssl
fi
cd $opensslsrcdir
./config --prefix=$freondir \
--openssldir=$freondir/etc/ssl \
--libdir=lib \
shared \
zlib-dynamic
make -j$corecount
make install
cd $tmpdir
}
# DVTM ~ Dynamic virtual terminal manager
dvtm()
{
cd $systemdir/dvtm
make -j$corecount
make install
cd $tmpdir
}
# Xfbdev dependencies
xlibs()
{
cd $tmpdir
cat > xlibs.md5 << "EOF"
ce2fb8100c6647ee81451ebe388b17ad xtrans-1.4.0.tar.bz2
f46572566e2cec801609d25f735285b7 libX11-1.7.0.tar.bz2
f5b48bb76ba327cd2a8dc7a383532a95 libXext-1.3.4.tar.bz2
4e1196275aa743d6ebd3d3d5ec1dff9c libFS-1.0.8.tar.bz2
76d77499ee7120a56566891ca2c0dbcf libICE-1.0.10.tar.bz2
87c7fad1c1813517979184c8ccd76628 libSM-1.2.3.tar.bz2
eeea9d5af3e6c143d0ea1721d27a5e49 libXScrnSaver-1.2.3.tar.bz2
a9019421d3ee8b4937b6afd9025f018a libXt-1.2.0.tar.bz2
ac774cff8b493f566088a255dbf91201 libXmu-1.1.3.tar.bz2
c5f16288f2da9f071b29111d68797480 libXau-1.0.9.tar.bz2
6f0ecf8d103d528cfc803aa475137afa libXpm-3.5.13.tar.bz2
e5e06eb14a608b58746bdd1c0bd7b8e3 libXaw-1.0.13.tar.bz2
07e01e046a0215574f36a3aacb148be0 libXfixes-5.0.3.tar.bz2
3fa0841ea89024719b20cd702a9b54e0 libXcomposite-0.4.5.tar.bz2
802179a76bded0b658f4e9ec5e1830a4 libXrender-0.9.10.tar.bz2
9b9be0e289130fb820aedf67705fc549 libXcursor-1.2.0.tar.bz2
e3f554267a7a04b042dc1f6352bd6d99 libXdamage-1.1.5.tar.bz2
6447db6a689fb530c218f0f8328c3abc libfontenc-1.1.4.tar.bz2
115c5c12ecce0e749cd91d999a5fd160 libXdmcp-1.1.3.tar.bz2
16eaf156edd79b68038b6a7c44aa9e9b libXfont-1.5.4.tar.bz2
4a433c24627b4ff60a4dd403a0990796 libXft-2.3.3.tar.bz2
62c4af0839072024b4b1c8cbe84216c7 libXi-1.7.10.tar.bz2
0d5f826a197dae74da67af4a9ef35885 libXinerama-1.1.4.tar.bz2
18f3b20d522f45e4dadd34afb5bea048 libXrandr-1.5.2.tar.bz2
5d6d443d1abc8e1f6fc1c57fb27729bb libXres-1.2.0.tar.bz2
ef8c2c1d16a00bd95b9fdcef63b8a2ca libXtst-1.2.3.tar.bz2
210b6ef30dda2256d54763136faa37b9 libXv-1.0.11.tar.bz2
3569ff7f3e26864d986d6a21147eaa58 libXvMC-1.0.12.tar.bz2
0ddeafc13b33086357cfa96fae41ee8e libXxf86dga-1.1.5.tar.bz2
298b8fff82df17304dfdb5fe4066fe3a libXxf86vm-1.1.4.tar.bz2
d2f1f0ec68ac3932dd7f1d9aa0a7a11c libdmx-1.1.4.tar.bz2
b34e2cbdd6aa8f9cc3fa613fd401a6d6 libpciaccess-0.16.tar.bz2
dd7e1e946def674e78c0efbc5c7d5b3b libxkbfile-1.1.0.tar.bz2
42dda8016943dc12aff2c03a036e0937 libxshmfence-1.3.tar.bz2
EOF
if [ ! -d xlibs ]; then
mkdir xlibs
fi
cd xlibs
grep -v '^#' ../xlibs.md5 | awk '{print $2}' | wget -i- -c \
-B $xlibmirror/ &&
md5sum -c ../xlibs.md5
for package in $(grep -v '^#' ../xlibs.md5 | awk '{print $2}')
do
packagedir=${package%.tar.bz2}
tar -xf $package
config_var="--prefix=$freondir --enable-shared"
cd $packagedir
case $packagedir in
libICE* )
./configure $config_var ICE_LIBS=-lpthread
make -j$corecount
make install
;;
libXfont2-[0-9]* )
./configure $config_var --disable-devel-docs
make -j$corecount
make install
;;
libXt-[0-9]* )
./configure $config_var \
--with-appdefaultdir=$freondir/etc/X11/app-defaults
make -j$corecount
make install
;;
* )
./configure $config_var
make -j$corecount
make install
;;
esac
cd ..
done
}
#last dep for X
xcb()
{
cd $tmpdir
# Grab latest sources for freetype
if [ ! -d $xcbsrcdir ]; then
wget $xcbmirror/$xcb
tar -xf $xcb
fi
cd $xcbsrcdir
./configure --prefix=$freondir --disable-static
make -j$corecount
make install
cd $tmpdir
# Grab latest sources for freetype
if [ ! -d $xcbutilsrcdir ]; then
wget $xcbmirror/$xcbutil
tar -xf $xcbutil
fi
cd $xcbutilsrcdir
./configure --prefix=$freondir --disable-static
make -j$corecount
make install
cd $tmpdir
# Grab latest sources for freetype
if [ ! -d $xcbprotosrcdir ]; then
wget $xcbmirror/$xcbproto
tar -xf $xcbproto
fi
cd $xcbprotosrcdir
./configure --prefix=$freondir --disable-static
make -j$corecount
make install
}
libbsd()
{
cd $tmpdir
# Grab latest sources for freetype
if [ ! -d $libbsdsrcdir ]; then
wget $libbsdmirror/$libbsd
tar -xf $libbsd
fi
cd $libbsdsrcdir
./configure --prefix=$freondir --disable-static
make -j$corecount
make install
cd $tmpdir
}
png16()
{
cd $tmpdir
# Grab latest sources for freetype
if [ ! -d $png16srcdir ]; then
wget $png16mirror/$png16
tar -xf $png16
fi
cd $png16srcdir
./configure --prefix=$freondir --disable-static
make -j$corecount
make install
cd $tmpdir
}
bz2()
{
cd $tmpdir
# Grab latest sources bzip2
if [ ! -d $bz2srcdir ]; then
wget $bz2mirror/$bz2
tar -xf $bz2
fi
cd $bz2srcdir
make -f Makefile-libbz2_so
make clean
make -j$corecount
make PREFIX=$freondir install
cp bzip2-shared $freondir/bin/bzip2
cp -a libbz2.so* $freondir/lib
cd $freondir/lib
ln -s libbz2.so.* libbz2.so
cd $tmpdir
}
fontconfig()
{
cd $tmpdir
# Grab latest sources font config
if [ ! -d $fontconfigsrcdir ]; then
wget $fontconfigmirror/$fontconfig
tar -xf $fontconfig
fi
cd $fontconfigsrcdir
./configure --prefix=$freondir \
--sysconfdir=$freondir/etc \
--localstatedir=$freondir/var \
--disable-docs
make -j$corecount
make install
cd $freondir/etc/fonts
cp $tmpdir/../files/etc/fonts/fonts.conf .
cd $tmpdir
}
pango()
{
cd $tmpdir
# Grab latest sources for libpango
if [ ! -d $pangosrcdir ]; then
wget $pangomirror/$pango
tar -xf $pango
fi
cd $pangosrcdir
./configure --prefix=$freondir
make -j$corecount
make install
cd $tmpdir
}
fribidi()
{
cd $tmpdir
# Grab latest sources for libfribidi
if [ ! -d $fribidisrcdir ]; then
wget $fribidimirror/$fribidi
tar -xf $fribidi
fi
cd $fribidisrcdir
./configure --prefix=$freondir
make -j$corecount
make install
cd $tmpdir
}
freetype()
{
cd $tmpdir
# Grab latest sources for freetype
if [ ! -d $freetypesrcdir ]; then
wget $freetypemirror/$freetype
tar -xf $freetype
fi
cd $freetypesrcdir
./configure --prefix=$freondir --disable-static
make -j$corecount
make install
cd $tmpdir
}
harfbuzz()
{
cd $tmpdir
if [ ! -d $harfbuzzsrcdir ]; then
wget $harfbuzzmirror/$harfbuzz
tar -xf $harfbuzz
fi
mv harfbuzz-2.3.1 $harfbuzzsrcdir
cd $harfbuzzsrcdir
#./autogen.sh
./configure --prefix=$freondir \
--disable-static \
--enable-shared \
--without-graphite2
make -j20
make install
cd $tmpdir
}
fixedfonts()
{
cd $systemdir/fonts
mkdir -p $freondir/lib/X11/fonts
cp -a * $freondir/lib/X11/fonts
cd ..
}
# TinyX Xfbdev ~ Nonaccelerated X server for simple GUI possibilities
# Freon Linux. Really can't believe it still compiles but yeah :D
tinyx()
{
cd $systemdir/tinyx
./autogen.sh
./configure --prefix=$freondir --disable-static --enable-shared
# Here we will have to disable build for Xvesa, only Xfbdev
cp ../../files/kdrive.config include/kdrive-config.h
make -j$corecount
make install
$tmpdir
}
# X11 applications
rxvt()
{
cd $systemdir/rxvt
./configure --prefix=$freondir
make -j$corecount
make install
cd $tmpdir
}
# Tiny file manager with terminal like key combos
dfm()
{
cd $systemdir/dfm
make
make install
cd $tmpdir
}
x()
{
cd $systemdir/x-scripts
mkdir -p /freon/bin
cp * /freon/bin/.
cd $tmpdir
}
jwm()
{
cd $systemdir/jwm
./configure --prefix=$freondir \
--disable-rsvg \
--disable-jpeg \
--disable-shape \
make -j$corecount
make install
cd $freondir/etc
cp $tmpdir/../files/etc/system.jwmrc .
cd $tmpdir
}
# We'll get there
tazweb()
{
cd $systemdir/tazweb
make -j$corecount
make install
cd $tmpdir
}
lostirc()
{
cd $systemdir/lostirc
./configure --prefix=$freondir
make -j$corecount
make install
cd $tmpdir
}
pcmanfm()
{
cd $tmpdir
# Grab sources for PCManFM
if [ ! -d $pcmanfmsrcdir ]; then
wget $pcmanfmmirror/$pcmanfm
tar -xf $pcmanfm
fi
cd $pcmanfmsrcdir
./configure --prefix=$freondir \
--sysconfdir=$freondir/etc
make -j$corecount
make install
cd $tmp
}
notify()
{
cd $tmpdir
# Grab sources for PCManFM
if [ ! -d $notifysrcdir ]; then
wget $notifymirror/$notify
tar -xf $notify
fi
cd $notifysrcdir
sed -e 's/2.90/2.24/' -e 's/gtk+-3.0/gtk+-2.0/' -i configure.ac
autoreconf -fi
./configure --prefix=$freondir \
--disable-static
make -j$corecount
make install
cd $tmp
}
lynx()
{
cd $tmpdir
# Grab sources for Lynx
if [ ! -d $lynxsrcdir ]; then
wget $lynxmirror/$lynx
tar -xf $lynx
fi
cd $lynxsrcdir
./configure --prefix=$freondir
make -j$corecount
make install
cd $tmpdir
}
glib2()
{
cd $tmpdir
# Grab sources for libglib2
if [ ! -d $glib2srcdir ]; then
wget $glib2mirror/$glib2
tar -xf $glib2
fi
cd $glib2srcdir
if [ ! -d "make-glib" ]; then
mkdir make-glib
cd make-glib
else
cd make-glib
fi
meson --prefix=$freondir -Dwith-pcre=no -Dwith-docs=no .. &&
ninja
ninja install
cd $freondir/lib/x86_64-linux-gnu
mv * ../
cd ../
rm -r x86_64-linux-gnu
cd $tmpdir
}
atk()
{
cd $tmpdir
# Grab sources for libexpat
if [ ! -d $atksrcdir ]; then
wget $atkmirror/$atk
tar -xf $atk
fi
cd $atksrcdir
if [ ! -d "make-atk" ]; then
mkdir make-atk
cd make-atk
else
cd make-atk
fi
meson --prefix=$freondir .. &&
ninja
ninja install
cd $tmpdir
}
cairo()
{
cd $tmpdir
# Grab sources for cairo
if [ ! -d $cairosrcdir ]; then
wget $cairomirror/$cairo
tar -xf $cairo
fi
cd $cairosrcdir
./configure --prefix=$freondir --disable-static
make -j$corecount
make install
cd $tmpdir
}
menu-cache()
{
cd $tmpdir
# Grab sources for libmenu-cache
if [ ! -d $menucachesrcdir ]; then
wget $menucachemirror/$menucache
tar -xf $menucache
fi
cd $menucachesrcdir
./configure --prefix=$freondir --disable-static
make -j$corecount
make install
cd $tmpdir
}
pixman()
{
cd $tmpdir
# Grab sources for pixman
if [ ! -d $pixmansrcdir ]; then
wget $cairomirror/$pixman
tar -xf $pixman
fi
cd $pixmansrcdir
./configure --prefix=$freondir --disable-static
make -j$corecount
make install
cd $tmpdir
}
gobject-intro()
{
cd $tmpdir
# Grab sources for gobject introspect
if [ ! -d $gobjectintrosrcdir ]; then
wget $gobjectintromirror/$gobjectintro
tar -xf $gobjectintro
fi
cd $gobjectintrosrcdir
./configure --prefix=$freondir --disable-static --with-python=python3
make -j$corecount
make install
cd $tmpdir
}
gdk-pixbuf()
{
cd $tmpdir
# Grab sources for libexpat
if [ ! -d $gdkpixbufsrcdir ]; then
wget $gdkpixbufmirror/$gdkpixbuf
tar -xf $gdkpixbuf
fi
cd $gdkpixbufsrcdir
./configure --prefix=$freondir --with-x11
make -j$corecount
make install
cd $tmpdir
}
expat()
{
cd $tmpdir
# Grab sources for libexpat
if [ ! -d $expatsrcdir ]; then
wget $expatmirror/$expat
tar -xf $expat
fi
cd $expatsrcdir
./configure --prefix=$freondir
make -j$corecount
make install
cd $tmpdir
}
util-linux()
{
cd $tmpdir
# Grab sources for util-linux
if [ ! -d $utillinuxsrcdir ]; then
wget $utillinuxmirror/$utillinux
tar -xf $utillinux
fi
cd $utillinuxsrcdir
./configure --prefix=$freondir \
--without-python \
--disable-makeinstall-chown \
--without-systemdsystemunitdir \
--without-ncurses
make -j$corecount
make install
cd $tmpdir
}
pcre()
{
cd $tmpdir
# Grab sources for pcre
if [ ! -d $pcresrcdir ]; then
wget $pcremirror/$pcre
tar -xf $pcre
fi
cd $pcresrcdir
./configure --prefix=$freondir \
--docdir=$freondir/share/doc/pcre-8.41 \
--enable-unicode-properties \
--enable-pcre16 \
--enable-pcre32 \
--enable-pcregrep-libz \
--enable-pcregrep-libbz2 \
--disable-static
make -j$corecount
make install
cd $freondir/lib
ln -s libpcre.so.1 libpcre.so.3 # For some programs within the package repo
cd $tmpdir
}
ffi()
{
cd $tmpdir
# Grab sources for libffi
if [ ! -d $ffisrcdir ]; then
wget $ffimirror/$ffi
tar -xf $ffi
fi
cd $ffisrcdir
./configure --prefix=$freondir --disable-static
make -j$corecount
make install
cd $tmpdir
}
selinux()
{
cd $tmpdir
# Grab sources for libidn
if [ ! -d libselinux-2.8 ]; then
wget $selinuxmirror/$selinux
tar -xf $selinux
fi
cd libselinux-2.8
make PREFIX=$freondir -j$corecount
make PREFIX=$freondir install
cd $tmpdir
}
idn()
{
cd $tmpdir
# Grab sources for libidn
if [ ! -d $idnsrcdir ]; then
wget $idnmirror/$idn
tar -xf $idn
fi
cd $idnsrcdir
./configure --prefix=$freondir
make -j$corecount
make install
cd $tmpdir
}
libfm()
{
cd $tmpdir
# Grab sources for libfm
if [ ! -d $fmsrcdir ]; then
wget $fmmirror/$fm
tar -xf $fm
fi
cd $fmsrcdir
./configure --prefix=$freondir \
--sysconfdir=$freondir/etc \
--disable-static
make -j$corecount
make install
cd $tmpdir
}
hexchat()
{
cd $tmpdir
# Grab sources for hexchat
if [ ! -d $hexchatsrcdir ]; then
wget $hexchatmirror/$hexchat
tar -xf $hexchat
fi
cd $hexchatsrcdir
./autogen.sh
./configure --prefix=$freondir --disable-python --disable-lua --disable-perl
make
make install
cd $tmpdir
}
gtk2()
{
cd $tmpdir
# Grab latest sources for gtk2
if [ ! -d $gtk2srcdir ]; then
wget $gtk2mirror/$gtk2
tar -xf $gtk2
fi
cd $gtk2srcdir
./configure --prefix=$freondir --sysconfdir=$freondir/etc
make -j$corecount
make install
cd $tmpdir
}
netsurf()
{
cd $tmpdir
# Grab latest sources for freetype
if [ ! -d $netsurfsrcdir ]; then
wget $netsurfmirror/$netsurf
tar -xf $netsurf
fi
cd $netsurfsrcdir
cat > env.sh <<'EOF'
#!/bin/sh
export PKG_CONFIG_PATH=/freon/lib/pkgconfig::
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/freon/lib
export PREFIX=/freon
EOF
chmod +x env.sh
./env.sh
make PREFIX=$freondir -j$corecount install
cd $tmpdir
}
# Beginning of debug too builds... not complete
strace()
{
cd $tmpdir
if [ ! -d "strace" ]; then
git clone $stracemirror
fi
cd strace
./build_static_example.sh
./configure --prefix=$freondir
make -j$corecount
make install
cd $tmpdir
}
elfutils()
{
cd $tmpdir
if [ ! -d "elfutils" ]; then
git clone $elfutilsmirror
fi
cd elfutils
./configure --prefix=$freondir --disable-static --enable-shared
make
make install
cd $tmpdir
}
fox()
{
cd $tmpdir
# Grab sources for libfox
if [ ! -d $foxsrcdir ]; then
wget $foxmirror/$fox
tar -xf $fox
fi
cd $foxsrcdir
./configure --prefix=$freondir \
--with-opengl=no \
--disable-jpeg \
--disable-tiff
make -j$corecount
make install
cd $tmpdir
}
case $1 in
all ) echo "Building all!"
ncurses; nano; chttpd; gmp; mpfr; binutils; mpc; gcc; bash; isl; termcap; ircii; openssl; dvtm;;
packages ) echo "Building useful essentials..."
ncurses; nano; bash; termcap;;
* ) echo "Building $1..."
$1;;
esac