From 09d1c1e33957648868d4757c73afa4e7935e2231 Mon Sep 17 00:00:00 2001 From: Albert S Date: Wed, 22 Jun 2022 23:25:33 +0200 Subject: [PATCH] initial commit --- README.md | 7 +++++++ build | 14 ++++++++++++++ scripts/1-create.sh | 10 ++++++++++ scripts/2-create.sh | 9 +++++++++ scripts/3-setup-gentoo.sh | 16 ++++++++++++++++ scripts/4-build-looqs.sh | 37 +++++++++++++++++++++++++++++++++++++ scripts/5-bundle.sh | 13 +++++++++++++ scripts/CONFIG | 2 ++ src/looqs | 7 +++++++ src/looqs-gui | 7 +++++++ 10 files changed, 122 insertions(+) create mode 100644 README.md create mode 100755 build create mode 100755 scripts/1-create.sh create mode 100755 scripts/2-create.sh create mode 100755 scripts/3-setup-gentoo.sh create mode 100755 scripts/4-build-looqs.sh create mode 100755 scripts/5-bundle.sh create mode 100755 scripts/CONFIG create mode 100755 src/looqs create mode 100755 src/looqs-gui diff --git a/README.md b/README.md new file mode 100644 index 0000000..06c2074 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# looqs-bundle + +The aim of this project is to create a tarball for [looqs](https://github.com/quitesimpleorg/looqs) that runs on any (recent) +Linux distribution. + +It uses [Gentoo Hardened](https://wiki.gentoo.org/wiki/Hardened_Gentoo) and creates a Qt library with less features than what is +usually found in distributions. diff --git a/build b/build new file mode 100755 index 0000000..ef47654 --- /dev/null +++ b/build @@ -0,0 +1,14 @@ +#!/bin/sh +set -e +[ -d cache ] || mkdir cache +SPAWN="systemd-nspawn -M gentoolooqsbuilder -D gentoo --bind=$(realpath ./out):/out --bind=$(realpath scripts):/scripts --bind=$(realpath cache):/var/cache/distfiles" + + +SETUPSCRIPT="/scripts/3-setup-gentoo.sh" +BUILDSCRIPT="/scripts/4-build-looqs.sh" +./scripts/1-create.sh +sudo ./scripts/2-create.sh +sudo ${SPAWN} /${SETUPSCRIPT} +sudo ${SPAWN} su - builder -c /${BUILDSCRIPT} +./scripts/5-bundle.sh + diff --git a/scripts/1-create.sh b/scripts/1-create.sh new file mode 100755 index 0000000..8467c75 --- /dev/null +++ b/scripts/1-create.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +set -e +# TODO: always download latest +wget https://bouncer.gentoo.org/fetch/root/all/releases/amd64/autobuilds/current-stage3-amd64-hardened-openrc/stage3-amd64-hardened-openrc-20220619T170540Z.tar.xz -O hardened.tar.xz +wget https://bouncer.gentoo.org/fetch/root/all/releases/amd64/autobuilds/current-stage3-amd64-hardened-openrc/stage3-amd64-hardened-openrc-20220619T170540Z.tar.xz.asc -O hardened.tar.xz.asc +gpg --verify hardened.tar.xz.asc hardened.tar.xz + + + diff --git a/scripts/2-create.sh b/scripts/2-create.sh new file mode 100755 index 0000000..bb7b820 --- /dev/null +++ b/scripts/2-create.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e +rm -rf gentoo out +mkdir gentoo +mkdir out +mkdir out/lib +mkdir out/bin +chmod -R 755 out +tar xfp hardened.tar.xz -C gentoo diff --git a/scripts/3-setup-gentoo.sh b/scripts/3-setup-gentoo.sh new file mode 100755 index 0000000..014ee2b --- /dev/null +++ b/scripts/3-setup-gentoo.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# Run me inside gentoo +set -e +mkdir --parents /etc/portage/repos.conf +cp /usr/share/portage/config/repos.conf /etc/portage/repos.conf/gentoo.conf +emerge-webrsync + +export USE="X jpeg png icu -accessibility -debug -dbus cairo" +emerge -v qtcore qtgui uchardet +emerge -v qtwidgets qtsql qtnetwork qtconcurrent +export USE="X jpeg png icu -accessibility -debug -dbus qt5 cairo minizip" +emerge -v app-text/poppler +emerge -v dev-libs/quazip +emerge -v dev-vcs/git +emerge -v qtchooser +useradd -m -s /bin/bash builder diff --git a/scripts/4-build-looqs.sh b/scripts/4-build-looqs.sh new file mode 100755 index 0000000..dfdbed1 --- /dev/null +++ b/scripts/4-build-looqs.sh @@ -0,0 +1,37 @@ +#!/bin/bash +set -e +. /scripts/CONFIG +wget https://quitesimple.org/share/pubkey +sha256sum pubkey | grep fe5ce4868d6998aabe08ab51dc2d8fded73cf126d03e2df37045b6c486904356 +gpg --import pubkey + + +rm -rf looqs +git clone https://github.com/quitesimpleorg/looqs +cd looqs +git submodule init +git submodule update +git fetch + +if [ "$TAG" != "master" -a "$TAG" != "dev" ] ; then +git verify-tag "$TAG" +fi +git checkout "$TAG" + +qmake +make + +cp cli/looqs /out/bin/ +cp gui/looqs-gui /out/bin/ + +for lib in $( find /usr/lib64/ -mindepth 1 | grep libQt | grep .so ) ; do +cp -a "$lib" /out/lib/ +done + +cp -a /usr/lib64/libcrypto* /out/lib/ +cp -a /usr/lib64/qt5/plugins /out/lib/ + +for lib in $( ldd gui/looqs-gui | awk '{print $3}' | grep so | grep -vE "libGL|libm|libc|fontconfig|libgcc|freetype|libX11|libQt" ) ; do +cp "$lib" /out/lib/ +done + diff --git a/scripts/5-bundle.sh b/scripts/5-bundle.sh new file mode 100755 index 0000000..b8d0509 --- /dev/null +++ b/scripts/5-bundle.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -e +. scripts/CONFIG + +DIRNAME="looqs-${TAG}" +ARCHIVENAME="${DIRNAME}.tar.xz" +mv out ${DIRNAME} +cp src/looqs-gui ${DIRNAME} +cp src/looqs ${DIRNAME} +chmod 755 src/looqs-gui +chmod 755 src/looqs +tar cfpvJ "${DIRNAME}".tar.xz "${DIRNAME}" +gpg -b --local-user "$SIGNING_KEY_EMAIL" "$ARCHIVENAME" diff --git a/scripts/CONFIG b/scripts/CONFIG new file mode 100755 index 0000000..4b78166 --- /dev/null +++ b/scripts/CONFIG @@ -0,0 +1,2 @@ +TAG="master" +SIGNING_KEY_EMAIL="repo@quitesimple.org" diff --git a/src/looqs b/src/looqs new file mode 100755 index 0000000..340ae89 --- /dev/null +++ b/src/looqs @@ -0,0 +1,7 @@ +#!/bin/sh +SELF=$(readlink -f "$0") +HERE=${SELF%/*} + +export LD_LIBRARY_PATH="/${HERE}/lib" +export QT_PLUGIN_PATH="/${HERE}/lib/plugins" +./bin/looqs diff --git a/src/looqs-gui b/src/looqs-gui new file mode 100755 index 0000000..444bee8 --- /dev/null +++ b/src/looqs-gui @@ -0,0 +1,7 @@ +#!/bin/sh +SELF=$(readlink -f "$0") +HERE=${SELF%/*} + +export LD_LIBRARY_PATH="/${HERE}/lib" +export QT_PLUGIN_PATH="/${HERE}/lib/plugins" +"${HERE}/bin/looqs-gui"