diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index b9ef7c0..5801f2f 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -11,9 +11,12 @@ jobs: steps: - name: Install clang-format run: | - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - CODENAME=$(lsb_release --short --codename) - sudo add-apt-repository "deb https://apt.llvm.org/${CODENAME}/ llvm-toolchain-${CODENAME}-${CLANG_VERSION} main" + major_version=$(lsb_release -rs | cut -d'.' -f1) + if [ "$major_version" -lt "24" ]; then + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - + CODENAME=$(lsb_release --short --codename) + sudo add-apt-repository "deb https://apt.llvm.org/${CODENAME}/ llvm-toolchain-${CODENAME}-${CLANG_VERSION} main" + fi sudo apt update sudo apt install -y clang-format-${CLANG_VERSION} diff --git a/.github/workflows/ubuntu.yaml b/.github/workflows/ubuntu.yaml index 0f2a18c..a77f81a 100644 --- a/.github/workflows/ubuntu.yaml +++ b/.github/workflows/ubuntu.yaml @@ -11,12 +11,31 @@ jobs: fail-fast: false matrix: include: + - name: Build - Ubuntu 20 Clang + runs-on: ubuntu-20.04 + compiler: clang + cxx-compiler: clang++ + cmake-args: -G Ninja -D PROXYRES_CODE_COVERAGE=ON + packages: llvm-12 libjavascriptcoregtk-4.0-dev libgconf2-dev + gcov-exec: llvm-cov-12 gcov + codecov: ubuntu + + - name: Build - Ubuntu 22 Clang + runs-on: ubuntu-22.04 + compiler: clang + cxx-compiler: clang++ + cmake-args: -G Ninja -D PROXYRES_CODE_COVERAGE=ON + packages: llvm-14 libjavascriptcoregtk-4.0-dev libgconf2-dev + gcov-exec: llvm-cov-14 gcov + codecov: ubuntu + - name: Build - Ubuntu Clang runs-on: ubuntu-latest compiler: clang cxx-compiler: clang++ cmake-args: -G Ninja -D PROXYRES_CODE_COVERAGE=ON - gcov-exec: llvm-cov-14 gcov + packages: llvm-15 libjavascriptcoregtk-4.1-dev gsettings-desktop-schemas + gcov-exec: llvm-cov-15 gcov codecov: ubuntu - name: Build - Ubuntu Clang (curl) @@ -24,14 +43,15 @@ jobs: compiler: clang cxx-compiler: clang++ cmake-args: -G Ninja -D PROXYRES_CODE_COVERAGE=ON -D PROXYRES_CURL=ON - gcov-exec: llvm-cov-14 gcov + packages: llvm-15 libjavascriptcoregtk-4.1-dev gsettings-desktop-schemas + gcov-exec: llvm-cov-15 gcov codecov: ubuntu_curl steps: - name: Install dependencies run: | sudo apt update - sudo apt install -y llvm-14 ninja-build libgconf2-dev libjavascriptcoregtk-4.0-dev + sudo apt install -y ninja-build libpsl-dev ${{ matrix.packages }} - name: Checkout repository uses: actions/checkout@v4 diff --git a/CMakeLists.txt b/CMakeLists.txt index c6b80e2..1184f5d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -115,11 +115,14 @@ elseif(APPLE) wpad_dhcp_mac.h) endif() elseif(UNIX) + find_package(PkgConfig REQUIRED) + pkg_check_modules(GConf gconf-2.0) + if (GConf_FOUND) + list(APPEND PROXYRES_SRCS config_gnome2.c config_gnome2.h) + endif() list(APPEND PROXYRES_SRCS config_env.c config_env.h - config_gnome2.c - config_gnome2.h config_gnome3.c config_gnome3.h config_kde.c @@ -282,16 +285,16 @@ elseif(APPLE) set_target_properties(proxyres PROPERTIES LINK_FLAGS -Wl,-F/Library/Frameworks) elseif(UNIX) - find_package(PkgConfig REQUIRED) - pkg_check_modules(deps REQUIRED IMPORTED_TARGET glib-2.0) target_link_libraries(proxyres PkgConfig::deps) - pkg_check_modules(GConf REQUIRED gconf-2.0) - # Don't link libraries at compile time since we dynamically load them at runtime - target_include_directories(proxyres PRIVATE ${GConf_INCLUDE_DIRS}) + if (GConf_FOUND) + # Don't link libraries at compile time since we dynamically load them at runtime + target_include_directories(proxyres PRIVATE ${GConf_INCLUDE_DIRS}) + target_compile_definitions(proxyres PRIVATE HAVE_GCONF) + endif() - pkg_search_module(JSCoreGTK REQUIRED javascriptcoregtk-4.0 javascriptcoregtk-3.0 javascriptcoregtk-1.0) + pkg_search_module(JSCoreGTK REQUIRED javascriptcoregtk-4.1 javascriptcoregtk-4.0 javascriptcoregtk-3.0 javascriptcoregtk-1.0) # Don't link libraries at compile time since we dynamically load them at runtime target_include_directories(proxyres PRIVATE ${JSCoreGTK_INCLUDE_DIRS}) diff --git a/config.c b/config.c index ef9d1e0..bc759c4 100644 --- a/config.c +++ b/config.c @@ -11,7 +11,9 @@ #if defined(__APPLE__) # include "config_mac.h" #elif defined(__linux__) -# include "config_gnome2.h" +# ifdef HAVE_GCONF +# include "config_gnome2.h" +# endif # include "config_gnome3.h" # include "config_kde.h" #elif defined(_WIN32) @@ -102,10 +104,12 @@ bool proxy_config_global_init(void) { if (proxy_config_gnome3_global_init()) g_proxy_config.proxy_config_i = proxy_config_gnome3_get_interface(); break; +# ifdef HAVE_GCONF case DESKTOP_ENV_GNOME2: if (proxy_config_gnome2_global_init()) g_proxy_config.proxy_config_i = proxy_config_gnome2_get_interface(); break; +# endif case DESKTOP_ENV_KDE5: case DESKTOP_ENV_KDE4: case DESKTOP_ENV_KDE3: diff --git a/config_gnome3.c b/config_gnome3.c index 82c2272..96057fa 100644 --- a/config_gnome3.c +++ b/config_gnome3.c @@ -6,7 +6,6 @@ #include #include #include -#include #include "config.h" #include "config_i.h" diff --git a/test/curl_proxyres.c b/test/curl_proxyres.c index 7a85bf2..0db8b73 100644 --- a/test/curl_proxyres.c +++ b/test/curl_proxyres.c @@ -1,5 +1,6 @@ #include #include +#include #include #ifdef _WIN32