summaryrefslogtreecommitdiff
path: root/contrib/build-env-setup
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/build-env-setup')
-rw-r--r--contrib/build-env-setup/README.md60
-rw-r--r--contrib/build-env-setup/setup32
2 files changed, 92 insertions, 0 deletions
diff --git a/contrib/build-env-setup/README.md b/contrib/build-env-setup/README.md
new file mode 100644
index 0000000..90322f7
--- /dev/null
+++ b/contrib/build-env-setup/README.md
@@ -0,0 +1,60 @@
+
+Showcase how to build and install
+=================================
+
+WARN: Do NOT perform any of these steps on your host system! This script
+ MUST only be run on a system which is a
+ just-throw-it-away-if-broken system.
+
+Sometimes happy developers (like me) have no choice but using terribly
+restricted systems where setting up tools to run even something as
+trivial as configure/make/install becomes a nightmare if not impossible.
+I found it to be very handy to have some independent qemu VM at hand
+which lets me install whatever I need, neither with any special software
+nor any annoying privileges on a host machine. Qemu runs portable and in
+user mode even doesn't need any annoying permissions at all.
+
+
+## Setup a minimal system in your qemu VM
+
+This setup mainly targets debian. Nevertheless it tries to stay POSIX
+compatible as far as possible. So setup a minimal install of your system
+of choice and then as soon you've SSH access to a (posix) shell, you're
+ready for the next step.
+
+Still not sure which system to use? Link below provides some candidates.
+HINT: Windows IMHO is a terrible choice. So stop complaining if you go
+this route.
+
+https://en.wikipedia.org/wiki/POSIX#POSIX-oriented_operating_systems
+
+
+## Start VM with SSH access
+
+Easiest way to work with your machine is via SSH. Therefore if you've
+chosen to use a qemu VM, make sure you've setup and configured sshd
+properly inside the VM. Then just pass args like those to qemu:
+
+ --device e1000,netdev=n0 --netdev user,id=n0,hostfwd=tcp:127.0.0.1:2222-:22
+
+Started this way, the SSHDaemon inside the VM is accessible from your
+host via "localhost" at port "2222":
+
+ ssh localhost -p2222
+
+
+## Finalize by build and install whole project
+
+Run the "./setup" script (which is a posix shell script btw) inside the
+freshly setup system. This script does all the work. Like installing
+required packages, configure and build the whole project and finally
+installing it into the VM so it can be tried out right away from your
+VMs shell.
+BTW: The script is constructed so it can be copy-pasted into a terminal.
+There is no need to transfer a file to the machine beforehand.
+
+
+
+
+
+
diff --git a/contrib/build-env-setup/setup b/contrib/build-env-setup/setup
new file mode 100644
index 0000000..31c5f11
--- /dev/null
+++ b/contrib/build-env-setup/setup
@@ -0,0 +1,32 @@
+
+echo "WARN: read (AND UNDERSTAND) the README before running this script!"
+sleep 3
+exit 1
+
+
+true \
+ && GIT_TAG="master" \
+ && CONFIGURE_OPTS= \
+ && PKGS_TO_ADD="ca-certificates curl gcc git make libc-dev tar" \
+ && PKGS_TO_DEL="curl gcc git make libc-dev" \
+ && SUDO=sudo \
+ && PKGINIT="$SUDO apt update" \
+ && PKGADD="$SUDO apt install -y --no-install-recommends" \
+ && PKGDEL="$SUDO apt purge -y" \
+ && PKGCLEAN="$SUDO apt clean" \
+ && WORKDIR="${HOME:?}/work" \
+ && true \
+ && mkdir -p "${WORKDIR:?}" && cd "${WORKDIR:?}" \
+ && ${PKGINIT:?} && ${PKGADD:?} $PKGS_TO_ADD \
+ && git clone --depth 42 --branch "${GIT_TAG:?}" https://github.com/hiddenalpha/bulk-ln.git . \
+ && git config advice.detachedHead false \
+ && git checkout "${GIT_TAG:?}" \
+ && ./configure $CONFIGURE_OPTS \
+ && make clean && make -j$(nproc) \
+ && $SUDO make install \
+ && find . -not -wholename './dist*' -delete \
+ && ${PKGDEL:?} $PKGS_TO_DEL && ${PKGCLEAN:?} \
+ && dirOfDistBundle="$(realpath dist)" \
+ && printf '\n SUCCESS :) Distribution bundle is ready in:\n\n %s\n\n Tip: Before pulling out your hair about how to get that archive out of\n your qemu VM. STOP kluding around with silly tools and learn how\n basic tools do the job perfectly fine:\n\n ssh %s@localhost -p2222 -- sh -c '\''true && cd "%s" && tar c *'\'' | tar x\n\n BTW: In addition bulk-ln got installed and is ready-to-use.\n\n' "${dirOfDistBundle:?}" "$USER" "${dirOfDistBundle:?}" \
+ && true
+