From b0c720d079c7f188fb0dd88c95941b27b11cc138 Mon Sep 17 00:00:00 2001 From: Morgan McMillian Date: Sun, 5 Sep 2021 13:28:17 -0700 Subject: [PATCH] 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. --- dev-build.sh | 48 +++++++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/dev-build.sh b/dev-build.sh index 098d119..824a504 100755 --- a/dev-build.sh +++ b/dev-build.sh @@ -3,8 +3,6 @@ PROJECT_DIR=~/pantalaimon-build TMP_DIR="${PROJECT_DIR}/tmp" -VIRTENV_DIR="${PROJECT_DIR}/virtenv" - OLM_DIR="${PROJECT_DIR}/olm" PANTALAIMON_DIR="${PROJECT_DIR}/pantalaimon" @@ -14,11 +12,12 @@ 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" +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 @@ -42,56 +41,67 @@ echo "Installing dependencies..." sudo apt update sudo apt install -y ${PACKAGES} -if [ ! -e "${OLM_DIR}/usr/local/lib/libolm.so" ]; then +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..." + echo "Building olm..." cd olm-master cmake . -Bbuild cmake --build build - - echo "Installing Olm..." cd build make install DESTDIR="${OLM_DIR}" -else - echo "Olm found. Skipping Olm Install..." fi -if [ ! -e "${PYTHON}" ]; then +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..." + 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 -else - echo "Python found. Skipping Python Install..." fi LD_LIBRARY_PATH=${PYTHON_DIR}/lib:${OLM_DIR}/usr/local/lib:${LD_LIBRARY_PATH} export LD_LIBRARY_PATH -echo "Installing PyInstaller..." -${PYTHON} -m pip install --upgrade pyinstaller +echo "Updating setuptools..." +${PIP} install --upgrade setuptools +${PIP} install --upgrade pip +${PIP} install --upgrade wheel -echo "Installing cryptography 3.2.1" -${PYTHON} -m pip install cryptography==3.2.1 +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 -I${OLM_DIR}/usr/local/include" LDFLAGS="-L${OLM_DIR}/usr/local/lib" ${PYTHON} -m pip install --upgrade 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 -