~ salmonella-environment-setup (master) 882bfca098221cbe0a5066369cbaf30ba1305f99


commit 882bfca098221cbe0a5066369cbaf30ba1305f99
Author:     Mario Domenech Goulart <mario@parenteses.org>
AuthorDate: Sat Nov 27 16:34:18 2021 +0100
Commit:     Mario Domenech Goulart <mario@parenteses.org>
CommitDate: Sat Nov 27 16:34:23 2021 +0100

    debian-bullseye.sh: refactor installation of egg dependencies
    
    Add "installers" directory and debian-common.sh as an attempt to
    reduce code duplication

diff --git a/system-setup/debian-bullseye.sh b/system-setup/debian-bullseye.sh
index b07ec07..d547d2c 100755
--- a/system-setup/debian-bullseye.sh
+++ b/system-setup/debian-bullseye.sh
@@ -4,271 +4,28 @@
 
 set -ex
 
-SALMONELLA_USER=chicken
-SALMONELLA_GROUP=chicken
-
-# BITS=32    # 32bit system
-BITS=64  # 64bit system
-
-## Disable Install-Suggests and Install-Recommends to save some space
-sudo sh -c "echo 'APT::Install-Suggests \"0\";' > /etc/apt/apt.conf.d/20no-extra-packages"
-sudo sh -c "echo 'APT::Install-Recommends \"0\";' >> /etc/apt/apt.conf.d/20no-extra-packages"
-sudo apt-get update
-
-
-## Packages
-sudo apt-get install \
-    build-essential \
-    clang \
-    git \
-    cmake \
-    flex \
-    subversion \
-    automake \
-    libf2c2-dev \
-    libalut-dev \
-    libtool \
-    libgsl-dev \
-    r-base-core \
-    libfcgi-dev \
-    libimlib2-dev \
-    libg2-dev \
-    libexif-dev \
-    libfann-dev \
-    libgts-dev \
-    libglpk-dev \
-    libaugeas-dev \
-    libtokyocabinet-dev \
-    libossp-uuid-dev \
-    libatlas-base-dev \
-    libsundials-dev \
-    liblapack-dev \
-    libsdl-net1.2-dev \
-    libffi-dev \
-    libsoil-dev \
-    gfortran \
-    libplot-dev \
-    libxosd-dev \
-    libreadline-dev \
-    libncurses5-dev \
-    libssl-dev \
-    libopenmpi-dev \
-    default-libmysqlclient-dev \
-    libopenal-dev \
-    python3-dev \
-    libsqlite3-dev \
-    libgdbm-dev \
-    freetds-dev \
-    libstemmer-dev \
-    zlib1g-dev \
-    libsvn-dev \
-    libfltk1.3-dev \
-    libzmq3-dev \
-    libmpfi-dev \
-    libphysfs-dev \
-    tk8.6 \
-    freeglut3-dev \
-    libglfw3-dev \
-    libsdl1.2-dev \
-    libsdl-mixer1.2-dev \
-    libsdl-sound1.2-dev \
-    libsdl-ttf2.0-dev \
-    libsdl-gfx1.2-dev \
-    libsdl-image1.2-dev \
-    libwebkit2gtk-4.0-dev \
-    openmpi-bin \
-    libglm-dev \
-    libusb-1.0-0-dev \
-    libffcall1-dev \
-    libdb-dev \
-    openjdk-11-jdk \
-    openjdk-11-dbg \
-    ant \
-    libdb5.3-dev \
-    libavcodec-dev \
-    libavformat-dev \
-    libswscale-dev \
-    graphviz \
-    time \
-    libmagic-dev \
-    libfuse-dev \
-    units \
-    postgresql-server-dev-all \
-    libmarkdown2-dev \
-    xorg-dev \
-    libglu1-mesa-dev \
-    libglew-dev \
-    libleveldb-dev \
-    libyaml-dev \
-    libudev-dev \
-    liblmdb-dev \
-    libola-dev \
-    libprotobuf-dev \
-    libnanomsg-dev \
-    libsass-dev \
-    libsndfile1-dev \
-    liblzma-dev \
-    libsdl2-dev \
-    libleptonica-dev \
-    libsvm-dev \
-    libsdl2-ttf-dev \
-    libsdl2-image-dev \
-    liblink-grammar-dev \
-    liballegro5-dev \
-    liballegro-image5-dev \
-    liballegro-acodec5-dev \
-    liballegro-dialog5-dev \
-    liballegro-audio5-dev \
-    liballegro-physfs5-dev \
-    liballegro-image5-dev \
-    liballegro-ttf5-dev\
-    libstfl-dev \
-    libblosc-dev \
-    libgumbo-dev \
-    haveged \
-    gnuplot \
-    libtag1-dev \
-    libespeak-ng-dev \
-    librocksdb-dev \
-
-##
-## Things that are not packaged for Debian
-##
-
-tmpdir=`mktemp -d`
-echo "### Using $tmpdir as temporary directory"
-
-
-### epeg
-
-cd $tmpdir
-wget http://www.call-with-current-continuation.org/tarballs/epeg-cvs-20070219.tar.gz
-tar xzvf epeg-cvs-20070219.tar.gz
-cd epeg
-./autogen.sh
-./configure --prefix=/usr/local
-sudo make install
-
-
-### proccpuinfo
-
-cd $tmpdir
-wget http://download.savannah.gnu.org/releases/proccpuinfo/libproccpuinfo-0.0.8.tar.bz2
-tar xjvf libproccpuinfo-0.0.8.tar.bz2
-cd libproccpuinfo-0.0.8/
-cmake -D CMAKE_INSTALL_PREFIX=/usr/local .
-make
-make test
-sudo make install
-
-
-### bvspis
-
-sudo mkdir -p /usr/local/bvspis
-sudo chown ${SALMONELLA_USER}:${SALMONELLA_GROUP} /usr/local/bvspis
-cd /usr/local/bvspis
-sudo wget http://www.netlib.org/toms/770.gz
-sudo gzip -d 770.gz
-sudo sh -c "awk 'NR>4' 770 > bvspis.sh"
-sudo rm 770
-sudo sh ./bvspis.sh
-sudo rm ./bvspis.sh
-
-# use "BVSPIS_PATH=/usr/local/bvspis/ salmonella bvsp-spline"
-
-
-### libgit2
-
-cd $tmpdir
-git clone git://github.com/libgit2/libgit2.git
-cd libgit2
-git checkout v0.25.0
-mkdir build && cd build
-cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
-sudo cmake --build . --target install
-
-
-### iup
-
-mkdir -p $tmpdir/iup
-cd $tmpdir/iup
-tarball=
-if [ "$BITS" = "32" ]; then
-    tarball=iup-3.8_Linux32_lib.tar.gz
-else
-    tarball=iup-3.8_Linux32_64_lib.tar.gz
-fi
-wget "http://sourceforge.net/projects/iup/files/3.8/Linux%2520Libraries/$tarball"
-tar xzvf $tarball
-sudo bash install_dev
-
-
-### canvas draw
-
-# Doesn't really work on wheezy.  Linking against canvas draw
-# libraries gives errors like "/usr/bin/ld: skipping incompatible ..."
-
-mkdir -p $tmpdir/cd
-cd $tmpdir/cd
-if [ "$BITS" = "32" ]; then
-    tarball=cd-5.6.1_Linux32_lib.tar.gz
-else
-    tarball=cd-5.6.1_Linux32_64_lib.tar.gz
-fi
-wget "http://ufpr.dl.sourceforge.net/project/canvasdraw/5.6.1/Linux%20Libraries/$tarball"
-tar xzvf $tarball
-sudo bash install_dev
-
-
-### cryptlib
-
-mkdir -p $tmpdir/cryptlib
-cd $tmpdir/cryptlib
-wget https://cryptlib-release.s3-ap-southeast-1.amazonaws.com/cryptlib345.zip
-unzip -a cryptlib345.zip
-make
-make shared
-sudo cp libcl.a libcl.so.3.* /usr/local/lib/
-sudo cp *.h /usr/local/include/
-
-
-### agar
-
-mkdir -p $tmpdir/agar
-cd $tmpdir/agar
-wget http://stable.hypertriton.com/agar/agar-1.5.0.tar.gz
-tar xzvf agar-1.5.0.tar.gz
-cd agar-1.5.0/
-./configure --without-freetype
-make depend all
-sudo make install
-
-
-### cmark
-
-mkdir -p $tmpdir/cmark
-cd $tmpdir/cmark
-git clone https://github.com/commonmark/cmark.git
-cd cmark
-mkdir build
-cd build
-cmake ..
-make
-sudo make install
-
-
-### KiWi
-
-mkdir -p $tmpdir/KiWi
-cd $tmpdir/KiWi
-git clone https://github.com/mobius3/KiWi.git
-cd KiWi
-git checkout 77ec0de71a0f365163676a752bc85477be5fae2f
-mkdir build
-cd build
-cmake ..
-make
-sudo make install
+anchor=$(readlink -f $(dirname "$0"))
+. "$anchor/debian-common.sh"
+
+to_install="\
+  packages/debian-bullseye.sh \
+  agar.sh                     \
+  bvspis.sh                   \
+  cmark.sh                    \
+  cryptlib.sh                 \
+  epeg.sh                     \
+  iup.sh                      \
+  canvas_draw.sh              \
+  kiwi.sh                     \
+  libgit2.sh                  \
+  proccpuinfo                 \
+  tcc.sh                      \
+"
+
+for script in $to_install; do
+    cd "$tmpdir"
+    . "$installers_dir/$script"
+done
 
 
 ### Finishing
diff --git a/system-setup/debian-common.sh b/system-setup/debian-common.sh
new file mode 100644
index 0000000..8791184
--- /dev/null
+++ b/system-setup/debian-common.sh
@@ -0,0 +1,15 @@
+export SALMONELLA_USER=chicken
+export SALMONELLA_GROUP=chicken
+
+# export BITS=32    # 32bit system
+export BITS=64  # 64bit system
+
+## Disable Install-Suggests and Install-Recommends to save some space
+sudo sh -c "echo 'APT::Install-Suggests \"0\";' > /etc/apt/apt.conf.d/20no-extra-packages"
+sudo sh -c "echo 'APT::Install-Recommends \"0\";' >> /etc/apt/apt.conf.d/20no-extra-packages"
+sudo apt-get update
+
+installers_dir=$anchor/installers
+
+tmpdir=`mktemp -d`
+echo "### Using $tmpdir as temporary directory"
diff --git a/system-setup/installers/agar.sh b/system-setup/installers/agar.sh
new file mode 100644
index 0000000..0b0bdad
--- /dev/null
+++ b/system-setup/installers/agar.sh
@@ -0,0 +1,8 @@
+mkdir agar
+cd agar
+wget http://stable.hypertriton.com/agar/agar-1.5.0.tar.gz
+tar xzvf agar-1.5.0.tar.gz
+cd agar-1.5.0/
+./configure --without-freetype
+make depend all
+sudo make install
diff --git a/system-setup/installers/bvspis.sh b/system-setup/installers/bvspis.sh
new file mode 100644
index 0000000..7c0af46
--- /dev/null
+++ b/system-setup/installers/bvspis.sh
@@ -0,0 +1,11 @@
+sudo mkdir -p /usr/local/bvspis
+sudo chown ${SALMONELLA_USER}:${SALMONELLA_GROUP} /usr/local/bvspis
+cd /usr/local/bvspis
+sudo wget http://www.netlib.org/toms/770.gz
+sudo gzip -d 770.gz
+sudo sh -c "awk 'NR>4' 770 > bvspis.sh"
+sudo rm 770
+sudo sh ./bvspis.sh
+sudo rm ./bvspis.sh
+
+# use "BVSPIS_PATH=/usr/local/bvspis/ salmonella bvsp-spline"
diff --git a/system-setup/installers/canvas_draw.sh b/system-setup/installers/canvas_draw.sh
new file mode 100644
index 0000000..3d0fc9d
--- /dev/null
+++ b/system-setup/installers/canvas_draw.sh
@@ -0,0 +1,10 @@
+mkdir canvas_draw
+cd canvas_draw
+if [ "$BITS" = "32" ]; then
+    tarball=cd-5.6.1_Linux32_lib.tar.gz
+else
+    tarball=cd-5.6.1_Linux32_64_lib.tar.gz
+fi
+wget "http://ufpr.dl.sourceforge.net/project/canvasdraw/5.6.1/Linux%20Libraries/$tarball"
+tar xzvf $tarball
+sudo bash install_dev
diff --git a/system-setup/installers/cmark.sh b/system-setup/installers/cmark.sh
new file mode 100644
index 0000000..c2d2a9f
--- /dev/null
+++ b/system-setup/installers/cmark.sh
@@ -0,0 +1,9 @@
+mkdir cmark
+cd cmark
+git clone https://github.com/commonmark/cmark.git
+cd cmark
+mkdir build
+cd build
+cmake ..
+make
+sudo make install
diff --git a/system-setup/installers/cryptlib.sh b/system-setup/installers/cryptlib.sh
new file mode 100644
index 0000000..a1d4970
--- /dev/null
+++ b/system-setup/installers/cryptlib.sh
@@ -0,0 +1,8 @@
+mkdir cryptlib
+cd cryptlib
+wget https://cryptlib-release.s3-ap-southeast-1.amazonaws.com/cryptlib345.zip
+unzip -a cryptlib345.zip
+make
+make shared
+sudo cp libcl.a libcl.so.3.* /usr/local/lib/
+sudo cp *.h /usr/local/include/
diff --git a/system-setup/installers/epeg.sh b/system-setup/installers/epeg.sh
new file mode 100644
index 0000000..c63a021
--- /dev/null
+++ b/system-setup/installers/epeg.sh
@@ -0,0 +1,6 @@
+wget http://www.call-with-current-continuation.org/tarballs/epeg-cvs-20070219.tar.gz
+tar xzvf epeg-cvs-20070219.tar.gz
+cd epeg
+./autogen.sh
+./configure --prefix=/usr/local
+sudo make install
diff --git a/system-setup/installers/iup.sh b/system-setup/installers/iup.sh
new file mode 100644
index 0000000..5d93d8d
--- /dev/null
+++ b/system-setup/installers/iup.sh
@@ -0,0 +1,11 @@
+mkdir iup
+cd iup
+tarball=
+if [ "$BITS" = "32" ]; then
+    tarball=iup-3.8_Linux32_lib.tar.gz
+else
+    tarball=iup-3.8_Linux32_64_lib.tar.gz
+fi
+wget "http://sourceforge.net/projects/iup/files/3.8/Linux%2520Libraries/$tarball"
+tar xzvf $tarball
+sudo bash install_dev
diff --git a/system-setup/installers/kiwi.sh b/system-setup/installers/kiwi.sh
new file mode 100644
index 0000000..ea7941f
--- /dev/null
+++ b/system-setup/installers/kiwi.sh
@@ -0,0 +1,10 @@
+mkdir kiwi
+cd kiwi
+git clone https://github.com/mobius3/KiWi.git
+cd KiWi
+git checkout 77ec0de71a0f365163676a752bc85477be5fae2f
+mkdir build
+cd build
+cmake ..
+make
+sudo make install
diff --git a/system-setup/installers/libgit2.sh b/system-setup/installers/libgit2.sh
new file mode 100644
index 0000000..da3deba
--- /dev/null
+++ b/system-setup/installers/libgit2.sh
@@ -0,0 +1,6 @@
+git clone git://github.com/libgit2/libgit2.git
+cd libgit2
+git checkout v0.25.0
+mkdir build && cd build
+cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
+sudo cmake --build . --target install
diff --git a/system-setup/installers/packages/debian-bullseye.sh b/system-setup/installers/packages/debian-bullseye.sh
new file mode 100644
index 0000000..c81c38e
--- /dev/null
+++ b/system-setup/installers/packages/debian-bullseye.sh
@@ -0,0 +1,113 @@
+sudo apt-get install \
+    build-essential \
+    clang \
+    git \
+    cmake \
+    flex \
+    subversion \
+    automake \
+    libf2c2-dev \
+    libalut-dev \
+    libtool \
+    libgsl-dev \
+    r-base-core \
+    libfcgi-dev \
+    libimlib2-dev \
+    libg2-dev \
+    libexif-dev \
+    libfann-dev \
+    libgts-dev \
+    libglpk-dev \
+    libaugeas-dev \
+    libtokyocabinet-dev \
+    libossp-uuid-dev \
+    libatlas-base-dev \
+    libsundials-dev \
+    liblapack-dev \
+    libsdl-net1.2-dev \
+    libffi-dev \
+    libsoil-dev \
+    gfortran \
+    libplot-dev \
+    libxosd-dev \
+    libreadline-dev \
+    libncurses5-dev \
+    libssl-dev \
+    libopenmpi-dev \
+    default-libmysqlclient-dev \
+    libopenal-dev \
+    python3-dev \
+    libsqlite3-dev \
+    libgdbm-dev \
+    freetds-dev \
+    libstemmer-dev \
+    zlib1g-dev \
+    libsvn-dev \
+    libfltk1.3-dev \
+    libzmq3-dev \
+    libmpfi-dev \
+    libphysfs-dev \
+    tk8.6 \
+    freeglut3-dev \
+    libglfw3-dev \
+    libsdl1.2-dev \
+    libsdl-mixer1.2-dev \
+    libsdl-sound1.2-dev \
+    libsdl-ttf2.0-dev \
+    libsdl-gfx1.2-dev \
+    libsdl-image1.2-dev \
+    libwebkit2gtk-4.0-dev \
+    openmpi-bin \
+    libglm-dev \
+    libusb-1.0-0-dev \
+    libffcall1-dev \
+    libdb-dev \
+    openjdk-11-jdk \
+    openjdk-11-dbg \
+    ant \
+    libdb5.3-dev \
+    libavcodec-dev \
+    libavformat-dev \
+    libswscale-dev \
+    graphviz \
+    time \
+    libmagic-dev \
+    libfuse-dev \
+    units \
+    postgresql-server-dev-all \
+    libmarkdown2-dev \
+    xorg-dev \
+    libglu1-mesa-dev \
+    libglew-dev \
+    libleveldb-dev \
+    libyaml-dev \
+    libudev-dev \
+    liblmdb-dev \
+    libola-dev \
+    libprotobuf-dev \
+    libnanomsg-dev \
+    libsass-dev \
+    libsndfile1-dev \
+    liblzma-dev \
+    libsdl2-dev \
+    libleptonica-dev \
+    libsvm-dev \
+    libsdl2-ttf-dev \
+    libsdl2-image-dev \
+    liblink-grammar-dev \
+    liballegro5-dev \
+    liballegro-image5-dev \
+    liballegro-acodec5-dev \
+    liballegro-dialog5-dev \
+    liballegro-audio5-dev \
+    liballegro-physfs5-dev \
+    liballegro-image5-dev \
+    liballegro-ttf5-dev\
+    libstfl-dev \
+    libblosc-dev \
+    libgumbo-dev \
+    haveged \
+    gnuplot \
+    libtag1-dev \
+    libespeak-ng-dev \
+    librocksdb-dev \
diff --git a/system-setup/installers/proccpuinfo.sh b/system-setup/installers/proccpuinfo.sh
new file mode 100644
index 0000000..93e9730
--- /dev/null
+++ b/system-setup/installers/proccpuinfo.sh
@@ -0,0 +1,7 @@
+wget http://download.savannah.gnu.org/releases/proccpuinfo/libproccpuinfo-0.0.8.tar.bz2
+tar xjvf libproccpuinfo-0.0.8.tar.bz2
+cd libproccpuinfo-0.0.8/
+cmake -D CMAKE_INSTALL_PREFIX=/usr/local .
+make
+make test
+sudo make install
diff --git a/system-setup/installers/tcc.sh b/system-setup/installers/tcc.sh
new file mode 100644
index 0000000..8f5ee91
--- /dev/null
+++ b/system-setup/installers/tcc.sh
@@ -0,0 +1,12 @@
+version=0.9.27
+
+wget -c "http://download.savannah.gnu.org/releases/tinycc/tcc-$version.tar.bz2"
+rm -rf "tcc-$version"
+tar xjf "tcc-$version.tar.bz2"
+cd "tcc-$version"
+
+# To compile some eggs we need a larger VSTACK_SIZE
+sed -i tcc.h -e 's/#define VSTACK_SIZE         256/#define VSTACK_SIZE  1024/'
+./configure
+make
+sudo make install
Trap