From e1ee5d7b37c7d4fefe5458c2811538e1b5f900bb Mon Sep 17 00:00:00 2001 From: tastytea Date: Sun, 27 Oct 2019 05:05:17 +0100 Subject: [PATCH] Remove dependency on libxdg-basedir and pkg-config. --- .drone.yml | 10 +++++----- README.adoc | 6 +----- cmake/packages.cmake | 2 +- cmake/remwhareadConfig.cmake.in | 2 -- pkg-config/remwharead.pc.in | 2 +- src/lib/CMakeLists.txt | 4 +--- src/lib/sqlite.cpp | 28 +++++++++++++++++++++++----- 7 files changed, 32 insertions(+), 22 deletions(-) diff --git a/.drone.yml b/.drone.yml index 9c358f0..4e237d4 100644 --- a/.drone.yml +++ b/.drone.yml @@ -24,7 +24,7 @@ steps: - rm /etc/apt/apt.conf.d/docker-clean - alias apt-get='rm -f /var/cache/apt/archives/lock && apt-get' - apt-get update -q - - apt-get install -qy g++ cmake pkg-config libpoco-dev libxdg-basedir-dev asciidoc catch + - apt-get install -qy g++-7 cmake libpoco-dev asciidoc catch - rm -rf build && mkdir -p build && cd build - cmake -DWITH_MOZILLA=YES -DWITH_TESTS=YES .. - make VERBOSE=1 @@ -52,7 +52,7 @@ steps: - gpg --armor --export 0x60c317803a41ba51845e371a1e9377a2ba9ef27f | apt-key add - - apt-get update -q - apt-get install -qy -t bionic g++-9 - - apt-get install -qy cmake pkg-config libpoco-dev libxdg-basedir-dev asciidoc catch + - apt-get install -qy cmake libpoco-dev asciidoc catch - rm -rf build && mkdir -p build && cd build - cmake -DWITH_MOZILLA=YES .. - make VERBOSE=1 @@ -71,7 +71,7 @@ steps: - rm /etc/apt/apt.conf.d/docker-clean - alias apt-get='rm -f /var/cache/apt/archives/lock && apt-get' - apt-get update -q - - apt-get install -qy clang-6.0 cmake pkg-config libpoco-dev libxdg-basedir-dev asciidoc catch + - apt-get install -qy clang-6.0 cmake libpoco-dev asciidoc catch - rm -rf build && mkdir -p build && cd build - cmake -DWITH_MOZILLA=YES .. - make VERBOSE=1 @@ -90,7 +90,7 @@ steps: - rm /etc/apt/apt.conf.d/docker-clean - alias apt-get='rm -f /var/cache/apt/archives/lock && apt-get' - apt-get update -q - - apt-get install -qy clang cmake pkg-config libpoco-dev libxdg-basedir-dev asciidoc catch + - apt-get install -qy clang cmake libpoco-dev asciidoc catch - rm -rf build && mkdir -p build && cd build - cmake -DWITH_MOZILLA=YES .. - make VERBOSE=1 @@ -140,7 +140,7 @@ steps: - rm /etc/apt/apt.conf.d/docker-clean - alias apt-get='rm -f /var/cache/apt/archives/lock && apt-get' - apt-get update -q - - apt-get install -qy g++ cmake pkg-config libpoco-dev libxdg-basedir-dev asciidoc catch + - apt-get install -qy g++ cmake libpoco-dev asciidoc catch - apt-get install -qy build-essential file zip - rm -rf build && mkdir -p build && cd build - cmake -DCMAKE_INSTALL_PREFIX=/usr -DWITH_MOZILLA=YES -DMOZILLA_NMH_DIR="lib/mozilla/native-messaging-hosts" -DWITH_DEB=YES .. diff --git a/README.adoc b/README.adoc index efbe359..141cbe9 100644 --- a/README.adoc +++ b/README.adoc @@ -12,8 +12,6 @@ :uri-gcc: https://gcc.gnu.org/ :uri-clang: https://clang.llvm.org/ :uri-cmake: https://cmake.org/ -:uri-pkgconfig: https://pkgconfig.freedesktop.org/wiki/ -:uri-libxdg-basedir: http://repo.or.cz/w/libxdg-basedir.git :uri-poco: https://pocoproject.org/ :uri-asciidoc: http://asciidoc.org/ :uri-catch: https://github.com/catchorg/Catch2 @@ -80,8 +78,6 @@ only. * Tested OS: Linux * C++ compiler (tested: {uri-gcc}[gcc] 8/9, {uri-clang}[clang] 6/7) * {uri-cmake}[cmake] (at least: 3.6) -* {uri-pkgconfig}[pkgconfig] (tested: 0.29) -* {uri-libxdg-basedir}[libxdg-basedir] (tested: 1.2) * {uri-poco}[POCO] (tested: 1.9 / 1.7) * Optional: ** Manpage: {uri-asciidoc}[asciidoc] (tested: 8.6) @@ -93,7 +89,7 @@ only. ==== [source,zsh] ---- -apt-get install g++ cmake pkg-config libpoco-dev libxdg-basedir-dev asciidoc dpkg +apt-get install g++ cmake libpoco-dev asciidoc dpkg ---- ==== diff --git a/cmake/packages.cmake b/cmake/packages.cmake index d845208..2f89eba 100644 --- a/cmake/packages.cmake +++ b/cmake/packages.cmake @@ -45,7 +45,7 @@ if (WITH_RPM) set(CPACK_RPM_PACKAGE_LICENSE "GPL-3") set(CPACK_RPM_PACKAGE_URL "https://schlomp.space/tastytea/${PROJECT_NAME}") set(CPACK_RPM_PACKAGE_REQUIRES - "poco-netssl >= 1.6, poco-sqlite >= 1.6, libxdg-basedir") + "poco-netssl >= 1.6, poco-sqlite >= 1.6") set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-0.${CPACK_PACKAGE_ARCHITECTURE}") set(CPACK_SOURCE_PACKAGE_FILE_NAME diff --git a/cmake/remwhareadConfig.cmake.in b/cmake/remwhareadConfig.cmake.in index 5c1586e..1fb51f6 100644 --- a/cmake/remwhareadConfig.cmake.in +++ b/cmake/remwhareadConfig.cmake.in @@ -4,7 +4,5 @@ include(GNUInstallDirs) find_depencency(Poco COMPONENTS Foundation Net NetSSL Data DataSQLite JSON XML CONFIG REQUIRED) -find_dependency(PkgConfig REQUIRED) -pkg_check_modules(libxdg-basedir REQUIRED IMPORTED_TARGET libxdg-basedir) include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") diff --git a/pkg-config/remwharead.pc.in b/pkg-config/remwharead.pc.in index 001d6b6..50b1518 100644 --- a/pkg-config/remwharead.pc.in +++ b/pkg-config/remwharead.pc.in @@ -9,5 +9,5 @@ Description: @PROJECT_DESCRIPTION@ Version: @PROJECT_VERSION@ Cflags: -I${includedir} Libs: -L${libdir} -l${name} -lPocoData -lstdc++fs -Requires.private: libxdg-basedir, icu-uc, icu-i18n +Requires.private: icu-uc, icu-i18n Libs.private: -lPocoFoundation -lPocoNet -lPocoNetSSL -lPocoDataSQLite -lPocoJSON -lPocoXML diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 3c1ed0f..09d46f1 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -1,7 +1,5 @@ include(GNUInstallDirs) -find_package(PkgConfig REQUIRED) -pkg_check_modules(libxdg-basedir REQUIRED IMPORTED_TARGET libxdg-basedir) # Some distributions do not contain Poco*Config.cmake recipes. find_package(Poco COMPONENTS Foundation Net NetSSL Data DataSQLite JSON XML @@ -24,7 +22,7 @@ target_include_directories(${PROJECT_NAME} "$") target_link_libraries(${PROJECT_NAME} - PRIVATE PkgConfig::libxdg-basedir pthread + PRIVATE pthread PUBLIC stdc++fs) # If no Poco*Config.cmake recipes are found, look for headers in standard dirs. diff --git a/src/lib/sqlite.cpp b/src/lib/sqlite.cpp index f719b17..12de60f 100644 --- a/src/lib/sqlite.cpp +++ b/src/lib/sqlite.cpp @@ -18,8 +18,13 @@ #include "time.hpp" #include #include +#include +#if POCO_VERSION >= 0x01090000 // Path::dataHome() is only in 1.9 and above. +#include +#else +#include +#endif #include -#include #include #include @@ -29,16 +34,29 @@ using std::cerr; using std::endl; using namespace Poco::Data::Keywords; using Poco::Data::Statement; +#if POCO_VERSION < 0x01090000 +using Poco::Environment; +#endif Database::Database() : _connected(false) { try { - xdgHandle xdg; - xdgInitHandle(&xdg); - _dbpath = xdgDataHome(&xdg) / fs::path("remwharead"); - xdgWipeHandle(&xdg); + #if POCO_VERSION >= 0x01090000 + _dbpath = Poco::Path::dataHome() / fs::path("remwharead"); + #else + if (Environment::has("XDG_DATA_HOME")) + { + _dbpath = Environment::get("XDG_DATA_HOME") + / fs::path("remwharead"); + } + else if (Environment::has("HOME")) + { + _dbpath = Environment::get("HOME") + / fs::path(".local/share/remwharead"); + } // Else use current directory. + #endif if (!fs::exists(_dbpath)) {