diff --git a/AboutPage.qml.in b/AboutPage.qml.in index 2424c86..eb8a48f 100644 --- a/AboutPage.qml.in +++ b/AboutPage.qml.in @@ -80,7 +80,7 @@ Page { Label { width: parent.width horizontalAlignment: Text.AlignHCenter - text: i18n.tr("Copyright (c) 2020 Morgan McMillian <thrrgilag@dreamfall.space>") + text: i18n.tr("Copyright (c) 2021 Morgan McMillian <thrrgilag@dreamfall.space>") wrapMode: Text.WordWrap } @@ -94,7 +94,7 @@ Page { Label { width: parent.width horizontalAlignment: Text.AlignHCenter - text: i18n.tr("Pantalaimon v0.7.0") + text: i18n.tr("Pantalaimon v0.9.1") wrapMode: Text.WordWrap fontSize: "large" } @@ -102,7 +102,7 @@ Page { Label { width: parent.width horizontalAlignment: Text.AlignHCenter - text: i18n.tr("Copyright (c) 2020 The Matrix.org Foundation CIC") + text: i18n.tr("Copyright (c) 2021 The Matrix.org Foundation CIC") wrapMode: Text.WordWrap } diff --git a/CMakeLists.txt b/CMakeLists.txt index 71bb392..09ec9a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,7 @@ execute_process( set(QT_IMPORTS_DIR "lib/${ARCH_TRIPLET}") set(APP_NAME "Pantalaimon UT") -set(APP_VERSION "0.4.0") +set(APP_VERSION "0.5.0") set(PROJECT_NAME "pantalaimon") set(FULL_PROJECT_NAME "pantalaimon.thrrgilag") set(CMAKE_INSTALL_PREFIX /) @@ -41,6 +41,7 @@ endif() configure_file(manifest.json.in ${CMAKE_CURRENT_BINARY_DIR}/manifest.json) configure_file(AboutPage.qml.in ${CMAKE_CURRENT_BINARY_DIR}/AboutPage.qml) +configure_file(pantalaimon.sh.in ${CMAKE_CURRENT_BINARY_DIR}/pantalaimon.sh) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/manifest.json DESTINATION ${CMAKE_INSTALL_PREFIX}) install(FILES ${PROJECT_NAME}.apparmor DESTINATION ${DATA_DIR}) install(DIRECTORY assets DESTINATION ${DATA_DIR}) @@ -51,6 +52,11 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/AboutPage.qml DESTINATION ${DATA_DIR}q # TODO: example config file for local testing # install(FILES example.conf DESTINATION ${CMAKE_INSTALL_PREFIX} RENAME pantalaimon.conf) +file(GLOB_RECURSE OLM_SO_FILES "$ENV{OLM_LIB_INSTALL_DIR}/lib/libolm.so*") +install(FILES ${OLM_SO_FILES} DESTINATION ${QT_IMPORTS_DIR}) +install(PROGRAMS build/${ARCH_TRIPLET}/pantalaimon/dist/pantalaimon DESTINATION ${CMAKE_INSTALL_PREFIX} RENAME pantalaimonexec) +install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/pantalaimon.sh DESTINATION ${CMAKE_INSTALL_PREFIX} RENAME pantalaimon) + # Translations file(GLOB_RECURSE I18N_SRC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/po qml/*.qml qml/*.js) list(APPEND I18N_SRC_FILES ${DESKTOP_FILE_NAME}.in.h) @@ -72,9 +78,6 @@ add_custom_target(${DESKTOP_FILE_NAME} ALL install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE_NAME} DESTINATION ${DATA_DIR}) -# TODO: figure out how to cross compile this -install(PROGRAMS ${PROJECT_NAME}-${CLICK_ARCH} DESTINATION ${CMAKE_INSTALL_PREFIX} RENAME ${PROJECT_NAME}) - add_subdirectory(po) # Make source files visible in qtcreator diff --git a/README.md b/README.md index 23ebfee..daa78e6 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,9 @@ End-to-end encryption aware Matrix reverse proxy daemon for Ubuntu Touch. - [x] About page - [x] App icon - [x] Fix image fetching (fixed in fluffychat) +- [x] Cross compile python+pantalaimon - [ ] Import/export keys - [ ] Ability to verify, ignore, or blacklist devices -- [ ] Cross compile python+pantalaimon - [ ] Release on open-store.io ## Known Issues @@ -22,19 +22,23 @@ End-to-end encryption aware Matrix reverse proxy daemon for Ubuntu Touch. * Previously encrypted messages cannot be decrypted * No user interaction to verify, ignore, or blacklist devices -## Build +## Build for armhf -This project is not currently setup for cross building. A binary will need to -be compiled on a device for each target architecture. Make sure there is -enough space on the device to install the build tools and compile python, olm, -and pantalaimon. +```sh +git clone https://git.sr.ht/~thrrgilag/pantalaimon-ut +git submodule update --init +clickable build-libs --arch armhf +clickable --arch armhf +``` -* `git clone https://git.sr.ht/~thrrgilag/pantalaimon-ut` -* push dev-build.sh to /home/phablet -* run `dev-build.sh` -* pull /home/phablet/pantalaimon-build/dist/pantalaimon -* rename pantalaimon to pantalaimon-armhf (or pantalaimon-arm64) -* run `clickable` +## Build for arm64 + +```sh +git clone https://git.sr.ht/~thrrgilag/pantalaimon-ut +git submodule update --init +clickable build-libs --arch arm64 +clickable --arch arm64 +``` ## Contributing @@ -48,6 +52,6 @@ Bugs can be filed at https://todo.sr.ht/~thrrgilag/pantalaimon-ut ## License -Copyright (C) 2020 Morgan McMillian +Copyright (C) 2021 Morgan McMillian Licensed under the Apache Software License 2.0 diff --git a/build-python.sh b/build-python.sh new file mode 100755 index 0000000..e5353fb --- /dev/null +++ b/build-python.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +PYTHON_VERSION="3.7.7" +CRYPTOGRAPHY_VERSION="3.2.1" + +echo "...building python..." +cd ${BUILD_DIR} +wget -qO- "https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz" | tar -xz + +echo +echo "...building python..." +echo +cd Python-${PYTHON_VERSION} +./configure --prefix="${INSTALL_DIR}" --enable-shared +make +make install +cd .. + +export LD_LIBRARY_PATH=${INSTALL_DIR}/lib:${LD_LIBRARY_PATH} + +echo +echo "...installing pyinstaller..." +echo +${INSTALL_DIR}/bin/pip3 install --upgrade pyinstaller + +export CRYPTOGRAPHY_ALLOW_OPENSSL_102="yes" +echo +echo "...installing cryptography..." +echo +${INSTALL_DIR}/bin/pip3 install --upgrade cryptography==${CRYPTOGRAPHY_VERSION} + +export LD_LIBRARY_PATH=${ROOT}/build/${ARCH_TRIPLET}/olm/install/lib/${ARCH_TRIPLET}:${LD_LIBRARY_PATH} +export CFLAGS=-I${ROOT}/build/${ARCH_TRIPLET}/olm/install/include +export LDFLAGS=-L${ROOT}/build/${ARCH_TRIPLET}/olm/install/lib/${ARCH_TRIPLET} +echo +echo "...installing pantalaimon..." +echo +${INSTALL_DIR}/bin/pip3 install --upgrade pantalaimon + +export PATH=/usr/${ARCH_TRIPLET}/bin:${PATH} +echo +echo "...creating executable..." +echo +${INSTALL_DIR}/bin/pyinstaller --onefile ${INSTALL_DIR}/bin/pantalaimon + diff --git a/clickable.json b/clickable.json index bafb7fc..f744373 100644 --- a/clickable.json +++ b/clickable.json @@ -1,5 +1,24 @@ { "clickable_minimum_required": "6.12.2", "builder": "cmake", + "libraries": { + "olm": { + "builder": "cmake", + "build_args": [ "-Bbuild", + "-DOLM_TESTS=OFF", + "-DBUILD_SHARED_LIBS=ON" + ], + "prebuild": "git submodule update --init --recursive" + }, + "pantalaimon": { + "builder": "custom", + "dependencies_target": [ + "libffi-dev", + "libssl-dev", + "libsqlite3-dev" + ], + "build": "${ROOT}/build-python.sh" + } + }, "kill": "qmlscene" } diff --git a/pantalaimon.sh.in b/pantalaimon.sh.in new file mode 100755 index 0000000..64bd403 --- /dev/null +++ b/pantalaimon.sh.in @@ -0,0 +1,6 @@ +#!/bin/bash + +INSTALL_DIR=`dirname $0` +export LD_LIBRARY_PATH=$INSTALL_DIR/lib/${ARCH_TRIPLET}:$LD_LIBRARY_PATH +$INSTALL_DIR/pantalaimonexec $@ + diff --git a/po/pantalaimon.thrrgilag.pot b/po/pantalaimon.thrrgilag.pot index 119513c..012ce98 100644 --- a/po/pantalaimon.thrrgilag.pot +++ b/po/pantalaimon.thrrgilag.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: pantalaimon.thrrgilag\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-08 03:47+0000\n" +"POT-Creation-Date: 2021-03-10 06:14+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -107,14 +107,14 @@ msgstr "" msgid "LogLevel" msgstr "" -#: ../qml/SettingsPage.qml:148 +#: ../qml/SettingsPage.qml:146 msgid "Delete homeserver" msgstr "" -#: ../qml/SettingsPage.qml:166 +#: ../qml/SettingsPage.qml:164 msgid "No homeservers" msgstr "" -#: ../qml/SettingsPage.qml:227 +#: ../qml/SettingsPage.qml:225 msgid "Add Homeserver" msgstr ""