diff --git a/.ci/install.sh b/.ci/install.sh index f700f303..d1bff54b 100755 --- a/.ci/install.sh +++ b/.ci/install.sh @@ -2,6 +2,12 @@ set -ex +if [ "$FLATPAK" ]; then + flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo + flatpak --noninteractive install --user flathub org.kde.Platform//5.14 + flatpak --noninteractive install --user flathub org.kde.Sdk//5.14 + exit +fi if [ "$TRAVIS_OS_NAME" = "osx" ]; then curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py sudo python get-pip.py diff --git a/.ci/script.sh b/.ci/script.sh index 0c6e3746..9438a652 100755 --- a/.ci/script.sh +++ b/.ci/script.sh @@ -2,6 +2,19 @@ set -ex +if [ "$FLATPAK" ]; then + mkdir -p build-flatpak + cd build-flatpak + + flatpak-builder --ccache --repo=repo --subject="Build of Nheko ${VERSION} `date`" app ../io.github.NhekoReborn.Nheko.json + flatpak build-bundle repo nheko-${VERSION}-${ARCH}.flatpak io.github.NhekoReborn.Nheko 0.7.0-dev + + mkdir ../artifacts + mv nheko-*.flatpak ../artifacts + + exit +fi + if [ "$TRAVIS_OS_NAME" = "linux" ]; then # make build use all available cores export CMAKE_BUILD_PARALLEL_LEVEL=$(cat /proc/cpuinfo | awk '/^processor/{print $3}' | wc -l) diff --git a/.travis.yml b/.travis.yml index ce189749..5e25f567 100644 --- a/.travis.yml +++ b/.travis.yml @@ -101,6 +101,19 @@ matrix: - qt59graphicaleffects - liblmdb-dev - libgl1-mesa-dev # needed for missing gl.h + - os: linux + env: + - DEPLOY=1 + - FLATPAK=1 + - ARCH=amd64 + addons: + apt: + sources: + - sourceline: 'ppa:alexlarsson/flatpak' + packages: + - flatpak + - flatpak-builder + - elfutils before_install: # Use TRAVIS_TAG if defined, or the short commit SHA otherwise diff --git a/CMakeLists.txt b/CMakeLists.txt index a2c4a5b5..eebac250 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -129,8 +129,7 @@ if(USE_BUNDLED_LMDB) hunter_add_package(lmdb) find_package(liblmdb CONFIG REQUIRED) else() - include(FindPkgConfig) - pkg_search_module(lmdb REQUIRED IMPORTED_TARGET lmdb) + find_package(LMDB) endif() # @@ -561,15 +560,11 @@ target_link_libraries(nheko PRIVATE Qt5::QuickWidgets nlohmann_json::nlohmann_json lmdbxx::lmdbxx + liblmdb::lmdb tweeny) -if(USE_BUNDLED_LMDB) - target_link_libraries(nheko PRIVATE liblmdb::lmdb) - if(MSVC) - target_link_libraries(nheko PRIVATE ntdll) - endif() -else() - target_link_libraries(nheko PRIVATE PkgConfig::lmdb) +if(MSVC) + target_link_libraries(nheko PRIVATE ntdll) endif() diff --git a/cmake/FindLMDB.cmake b/cmake/FindLMDB.cmake new file mode 100644 index 00000000..372dc7a5 --- /dev/null +++ b/cmake/FindLMDB.cmake @@ -0,0 +1,15 @@ +# +# Find the lmdb library & include dir. +# + +find_path (LMDB_INCLUDE_DIR NAMES lmdb.h PATHS "$ENV{LMDB_DIR}/include") +find_library (LMDB_LIBRARY NAMES lmdb PATHS "$ENV{LMDB_DIR}/lib" ) +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LMDB DEFAULT_MSG LMDB_INCLUDE_DIR LMDB_LIBRARY) + + +add_library(lmdb INTERFACE IMPORTED GLOBAL) +target_include_directories(lmdb INTERFACE ${LMDB_INCLUDE_DIR}) +target_link_libraries(lmdb INTERFACE ${LMDB_LIBRARY}) + +add_library(liblmdb::lmdb ALIAS lmdb) diff --git a/io.github.NhekoReborn.Nheko.json b/io.github.NhekoReborn.Nheko.json new file mode 100644 index 00000000..f6beaeb9 --- /dev/null +++ b/io.github.NhekoReborn.Nheko.json @@ -0,0 +1,187 @@ +{ + "id": "io.github.NhekoReborn.Nheko", + "command": "nheko", + "branch": "0.7.0-dev", + "runtime": "org.kde.Platform", + "runtime-version": "5.14", + "sdk": "org.kde.Sdk", + "rename-icon": "nheko", + "rename-desktop-file": "nheko.desktop", + "rename-appdata-file": "nheko.appdata.xml", + "finish-args": [ + "--device=dri", + "--filesystem=home", + "--share=ipc", + "--share=network", + "--socket=pulseaudio", + "--socket=wayland", + "--socket=x11", + "--talk-name=org.freedesktop.Notifications", + "--talk-name=org.kde.StatusNotifierWatcher" + ], + "cleanup": [ + "/include", + "/bin/mdb*", + "*.a" + ], + "modules": [ + { + "name": "lmdb", + "sources": [ + { + "sha256": "f3927859882eb608868c8c31586bb7eb84562a40a6bf5cc3e13b6b564641ea28", + "type": "archive", + "url": "https://github.com/LMDB/lmdb/archive/LMDB_0.9.22.tar.gz" + } + ], + "make-install-args": [ + "prefix=/app" + ], + "no-autogen": true, + "subdir": "libraries/liblmdb" + }, + { + "name": "cmark", + "buildsystem": "cmake-ninja", + "builddir": true, + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DCMARK_TESTS=OFF" + ], + "sources": [ + { + "sha256": "2558ace3cbeff85610de3bda32858f722b359acdadf0c4691851865bb84924a6", + "type": "archive", + "url": "https://github.com/commonmark/cmark/archive/0.29.0.tar.gz" + } + ] + }, + { + "name": "spdlog", + "buildsystem": "cmake-ninja", + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DSPDLOG_BUILD_EXAMPLES=0", + "-DSPDLOG_BUILD_BENCH=0", + "-DSPDLOG_BUILD_TESTING=0" + ], + "sources": [ + { + "sha256": "3dbcbfd8c07e25f5e0d662b194d3a7772ef214358c49ada23c044c4747ce8b19", + "type": "archive", + "url": "https://github.com/gabime/spdlog/archive/v1.1.0.tar.gz" + } + ] + }, + { + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release" + ], + "buildsystem": "cmake-ninja", + "name": "olm", + "sources": [ + { + "commit": "6753595300767dd70150831dbbe6f92d64e75038", + "disable-shallow-clone": true, + "tag": "3.1.4", + "type": "git", + "url": "https://gitlab.matrix.org/matrix-org/olm.git" + } + ] + }, + { + "config-opts":[ + "-DJSON_BuildTests=OFF" + ], + "buildsystem":"cmake", + "name": "nlohmann", + "sources":[ + { + "sha256": "d51a3a8d3efbb1139d7608e28782ea9efea7e7933157e8ff8184901efd8ee760", + "type": "archive", + "url": "https://github.com/nlohmann/json/archive/v3.7.0.tar.gz" + } + ] + }, + { + "name": "sodium", + "sources": [ + { + "sha256": "6f504490b342a4f8a4c4a02fc9b866cbef8622d5df4e5452b46be121e46636c1", + "type": "archive", + "url": "https://github.com/jedisct1/libsodium/releases/download/1.0.18-RELEASE/libsodium-1.0.18.tar.gz" + } + ] + }, + { + "build-commands": [ + "./bootstrap.sh --with-libraries=thread,system,iostreams --prefix=/app", + "./b2 -d0 variant=release link=static threading=multi --layout=system", + "./b2 -d0 install" + ], + "buildsystem": "simple", + "name": "boost", + "sources": [ + { + "sha256": "430ae8354789de4fd19ee52f3b1f739e1fba576f0aded0897c3c2bc00fb38778", + "type": "archive", + "url": "https://dl.bintray.com/boostorg/release/1.70.0/source/boost_1_70_0.tar.bz2" + } + ] + }, + { + "config-opts": [ + "-DBUILD_LIB_TESTS=OFF", + "-DBUILD_LIB_EXAMPLES=OFF", + "-DCMAKE_BUILD_TYPE=Release", + "-DBUILD_SHARED_LIBS=OFF" + ], + "buildsystem": "cmake-ninja", + "name": "mtxclient", + "sources": [ + { + "sha256": "8cf5470570d2ed6affc0bbe0f4b6be9b0a2e2372e9f920b504126841bb73036f", + "type": "archive", + "url": "https://github.com/Nheko-Reborn/mtxclient/archive/5fbee216e640da45c05f25b1f84f03c88bca5910.tar.gz" + } + ] + }, + { + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DTWEENY_BUILD_DOCUMENTATION=OFF", + "-DTWEENY_BUILD_EXAMPLES=OFF" + ], + "buildsystem": "cmake-ninja", + "name": "tweeny", + "sources": [ + { + "sha256": "482857256a7235646004682912badb6521d361ed6987c8ebdae7986bf64ce694", + "type": "archive", + "url": "https://github.com/mobius3/tweeny/archive/43f4130f7e4a67c19d870b60864bc2862c19b81f.tar.gz" + } + ] + }, + { + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DLMDBXX_INCLUDE_DIR=.deps/lmdbxx" + ], + "buildsystem": "cmake-ninja", + "name": "nheko", + "sources": [ + { + "path": ".", + "type": "dir", + "skip": ["build-flatpak"] + }, + { + "dest": ".deps/lmdbxx", + "sha256": "93721132bbf5045d38ad62de2997655e9984c48ea5c9886746d42128f4b26fbd", + "type": "archive", + "url": "https://github.com/bendiken/lmdbxx/archive/0b43ca87d8cfabba392dfe884eb1edb83874de02.tar.gz" + } + ] + } + ] +}