b0c720d079
Added support for building the current version of the python cryptography library which now requires rust. Also included the ability to build panctl.
107 lines
3.2 KiB
Bash
Executable file
107 lines
3.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
PROJECT_DIR=~/pantalaimon-build
|
|
TMP_DIR="${PROJECT_DIR}/tmp"
|
|
|
|
OLM_DIR="${PROJECT_DIR}/olm"
|
|
PANTALAIMON_DIR="${PROJECT_DIR}/pantalaimon"
|
|
|
|
PYTHON_VERSION_MINOR="3.7"
|
|
PYTHON_VERSION_PATCH="7"
|
|
PYTHON_VERSION="${PYTHON_VERSION_MINOR}.${PYTHON_VERSION_PATCH}"
|
|
PYTHON_DIR="${PROJECT_DIR}/python"
|
|
PYTHON_SRC_DIR="${TMP_DIR}/Python-${PYTHON_VERSION}"
|
|
PYTHON="${PYTHON_DIR}/bin/python${PYTHON_VERSION_MINOR}"
|
|
PIP="${PYTHON_DIR}/bin/pip3"
|
|
|
|
mkdir -p "${PROJECT_DIR}"
|
|
mkdir -p "${TMP_DIR}"
|
|
|
|
PACKAGES="make cmake build-essential zlibc python3-venv libffi-dev ppa-purge libssl-dev libsqlite3-dev zlib1g-dev rustc cargo libgirepository1.0-dev libdbus-1-dev libcairo2-dev"
|
|
|
|
PANTALAIMON_PATCH_CONTENT="
|
|
diff --git a/pantalaimon/main.py b/pantalaimon/main.py
|
|
index 896d29e..3e0fee8 100644
|
|
--- a/pantalaimon/main.py
|
|
+++ b/pantalaimon/main.py
|
|
@@ -32,6 +32,7 @@ from pantalaimon.log import logger
|
|
from pantalaimon.thread_messages import DaemonResponse
|
|
from pantalaimon.ui import UI_ENABLED
|
|
|
|
+keyring.core.set_keyring(keyring.core.load_keyring('keyring.backends.SecretService.Keyring'))
|
|
|
|
def create_dirs(data_dir, conf_dir):
|
|
try:
|
|
"
|
|
|
|
echo "Remounting RootFS writable..."
|
|
sudo mount -o remount,rw /
|
|
|
|
echo "Installing dependencies..."
|
|
sudo apt update
|
|
sudo apt install -y ${PACKAGES}
|
|
|
|
OLMCK=${OLM_DIR}/usr/local/lib/libolm.so
|
|
if test -f ${OLMCK}; then
|
|
echo "olm found, skipping..."
|
|
else
|
|
cd "${TMP_DIR}"
|
|
echo "Downloading Olm..."
|
|
wget -qO- "https://gitlab.matrix.org/matrix-org/olm/-/archive/master/olm-master.tar.gz" | tar -xz
|
|
|
|
echo "Building olm..."
|
|
cd olm-master
|
|
cmake . -Bbuild
|
|
cmake --build build
|
|
cd build
|
|
make install DESTDIR="${OLM_DIR}"
|
|
fi
|
|
|
|
if test -f ${PYTHON}; then
|
|
echo "python found, skipping..."
|
|
else
|
|
echo "Downloading Python..."
|
|
cd "${TMP_DIR}"
|
|
wget -qO- "https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz" | tar -xz
|
|
|
|
echo "Installing python..."
|
|
cd "${PYTHON_SRC_DIR}"
|
|
#./configure --prefix="${PYTHON_DIR}" --with-openssl=${OPENSSL_DIR} --enable-shared
|
|
./configure --prefix="${PYTHON_DIR}" --enable-shared
|
|
make
|
|
make install
|
|
fi
|
|
|
|
LD_LIBRARY_PATH=${PYTHON_DIR}/lib:${OLM_DIR}/usr/local/lib:${LD_LIBRARY_PATH}
|
|
export LD_LIBRARY_PATH
|
|
|
|
echo "Updating setuptools..."
|
|
${PIP} install --upgrade setuptools
|
|
${PIP} install --upgrade pip
|
|
${PIP} install --upgrade wheel
|
|
|
|
echo "Installing PyInstaller..."
|
|
${PIP} install --upgrade pyinstaller
|
|
|
|
echo "Installing cryptography..."
|
|
CRYPTOGRAPHY_ALLOW_OPENSSL_102="yes" ${PIP} install cryptography
|
|
|
|
echo "Installing pycairo..."
|
|
${PIP} install pycairo==1.19.1
|
|
|
|
echo "Installing pygobject..."
|
|
PYGOBJECT_WITHOUT_PYCAIRO=1 ${PIP} install --no-build-isolation pygobject==3.38
|
|
|
|
echo "Installing Pantalaimon..."
|
|
CFLAGS=-I${OLM_DIR}/usr/local/include LDFLAGS=-L${OLM_DIR}/usr/local/lib ${PIP} install --upgrade pantalaimon[ui]
|
|
|
|
echo "Bundling Pantalaimon..."
|
|
cd ${PROJECT_DIR}
|
|
echo "${PANTALAIMON_PATCH_CONTENT}" > main.patch
|
|
patch ${PYTHON_DIR}/lib/python${PYTHON_VERSION_MINOR}/site-packages/pantalaimon/main.py main.patch
|
|
${PYTHON_DIR}/bin/pyinstaller --onefile ${PYTHON_DIR}/bin/pantalaimon
|
|
${PYTHON_DIR}/bin/pyinstaller --onefile ${PYTHON_DIR}/bin/panctl
|
|
|
|
echo "Cleaning up, reverting changes to RootFS..."
|
|
sudo apt autoremove -y ${PACKAGES}
|
|
sudo apt clean
|