pantalaimon-ut/dev-build.sh
Morgan McMillian b0c720d079 update device build dependencies
Added support for building the current version of the python
cryptography library which now requires rust. Also included the ability
to build panctl.
2021-09-05 13:28:17 -07:00

108 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