diff options
Diffstat (limited to 'pkgs/servers')
-rw-r--r-- | pkgs/servers/ebusd/default.nix | 8 | ||||
-rw-r--r-- | pkgs/servers/home-assistant/default.nix | 158 | ||||
-rw-r--r-- | pkgs/servers/http/apache-httpd/2.4.nix | 6 | ||||
-rw-r--r-- | pkgs/servers/ldap/lldap/default.nix | 3 | ||||
-rw-r--r-- | pkgs/servers/pinnwand/default.nix | 9 | ||||
-rw-r--r-- | pkgs/servers/search/khoj/default.nix | 128 | ||||
-rw-r--r-- | pkgs/servers/sql/mariadb/connector-c/3_1.nix | 2 | ||||
-rw-r--r-- | pkgs/servers/sql/mariadb/connector-c/3_2.nix | 2 | ||||
-rw-r--r-- | pkgs/servers/sql/mariadb/connector-c/3_3.nix | 2 | ||||
-rw-r--r-- | pkgs/servers/sql/mariadb/connector-c/default.nix | 8 | ||||
-rw-r--r-- | pkgs/servers/sql/mariadb/default.nix | 5 | ||||
-rw-r--r-- | pkgs/servers/sql/mariadb/patch/0001-Fix-build-with-libxml2-2.12.patch | 167 | ||||
-rw-r--r-- | pkgs/servers/sql/postgresql/default.nix | 16 | ||||
-rw-r--r-- | pkgs/servers/sql/postgresql/patches/libxml2.12-15.patch | 22 |
14 files changed, 445 insertions, 91 deletions
diff --git a/pkgs/servers/ebusd/default.nix b/pkgs/servers/ebusd/default.nix index 3e0b24c42c86d..bc20b930aef06 100644 --- a/pkgs/servers/ebusd/default.nix +++ b/pkgs/servers/ebusd/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, pkgs, fetchFromGitHub, argparse, mosquitto, cmake, autoconf, automake, libtool, pkg-config, openssl }: +{ lib, stdenv, pkgs, fetchFromGitHub, fetchpatch, argparse, mosquitto, cmake, autoconf, automake, libtool, pkg-config, openssl }: stdenv.mkDerivation rec { pname = "ebusd"; @@ -27,6 +27,12 @@ stdenv.mkDerivation rec { patches = [ ./patches/ebusd-cmake.patch + # Upstream patch for gcc-13 copmpatibility: + (fetchpatch { + name = "gcc-13.patch"; + url = "https://github.com/john30/ebusd/commit/3384f3780087bd6b94d46bf18cdad18201ad516c.patch"; + hash = "sha256-+wZDHjGaIhBCqhy2zmIE8Ko3uAiw8kfKx64etCqRQjM="; + }) ]; cmakeFlags = [ diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix index 62abc5de309ae..72f9fd11c7966 100644 --- a/pkgs/servers/home-assistant/default.nix +++ b/pkgs/servers/home-assistant/default.nix @@ -3,6 +3,7 @@ , callPackage , fetchFromGitHub , fetchPypi +, fetchpatch , python311 , substituteAll , ffmpeg-headless @@ -30,16 +31,46 @@ let # Override the version of some packages pinned in Home Assistant's setup.py and requirements_all.txt (self: super: { - # https://github.com/home-assistant/core/pull/101913 - aiohttp = super.aiohttp.overridePythonAttrs (old: rec { - version = "3.9.1"; - src = fetchPypi { - inherit (old) pname; - inherit version; - hash = "sha256-j8Sah6wmnUUp2kWHHi/7aHTod3nD0OLM2BPAiZIhI50="; + aiogithubapi = super.aiogithubapi.overridePythonAttrs (oldAttrs: rec { + version = "22.10.1"; + src = fetchFromGitHub { + owner = "ludeeus"; + repo = "aiogithubapi"; + rev = "refs/tags/${version}"; + hash = "sha256-ceBuqaMqqL6qwN52765MG4sLt+08hx2G9rUVNC7x6ik="; + }; + propagatedBuildInputs = with self; [ + aiohttp + async-timeout + backoff + ]; + }); + + aionotion = super.aionotion.overridePythonAttrs (oldAttrs: rec { + version = "2023.05.5"; + src = fetchFromGitHub { + owner = "bachya"; + repo = "aionotion"; + rev = "refs/tags/${version}"; + hash = "sha256-/2sF8m5R8YXkP89bi5zR3h13r5LrFOl1OsixAcX0D4o="; + }; + patches = [ + (fetchpatch { + # clean up build dependencies; https://github.com/bachya/aionotion/commit/53c7285110d12810f9b43284295f71d052a81b83 + url = "https://github.com/bachya/aionotion/commit/53c7285110d12810f9b43284295f71d052a81b83.patch"; + hash = "sha256-RLRbHmaR2A8MNc96WHx0L8ccyygoBUaOulAuRJkFuUM="; + }) + ]; + }); + + aiopvapi = super.aiopvapi.overridePythonAttrs (oldAttrs: rec { + version = "2.0.4"; + src = fetchFromGitHub { + owner = "sander76"; + repo = "aio-powerview-api"; + rev = "refs/tags/v${version}"; + hash = "sha256-cghfNi5T343/7GxNLDrE0iAewMlRMycQTP7SvDVpU2M="; }; - patches = []; - doCheck = false; }); aioskybell = super.aioskybell.overridePythonAttrs (oldAttrs: rec { @@ -60,14 +91,19 @@ let rev = "refs/tags/${version}"; hash = "sha256-tWnxGLJT+CRFvkhxFamHxnLXBvoR8tfOvzH1o1i5JJg="; }; + postPatch = '' + substituteInPlace pyproject.toml --replace \ + '"setuptools >= 35.0.2", "wheel >= 0.29.0", "poetry>=0.12"' \ + '"poetry-core"' + ''; }); - aioresponses = super.aioresponses.overridePythonAttrs (oldAttrs: rec { - pname = "aioresponses"; - version = "0.7.6"; + amberelectric = super.amberelectric.overridePythonAttrs (oldAttrs: rec { + version = "1.0.4"; src = fetchPypi { - inherit pname version; - hash = "sha256-95XZ29otYXdIQOfjL1Nm9FdS0a3Bt0yTYq/QFylsfuE="; + inherit (oldAttrs) pname; + inherit version; + hash = "sha256-5SWJnTxRm6mzP0RxrgA+jnV+Gp23WjqQA57wbT2V9Dk="; }; }); @@ -123,6 +159,7 @@ let aenum aiohttp pydantic + requests ]; doCheck = false; # requires asynctest, which does not work on python 3.11 }); @@ -146,6 +183,16 @@ let }; }); + mcstatus = super.mcstatus.overridePythonAttrs (oldAttrs: rec { + version = "11.0.0"; + src = fetchFromGitHub { + owner = "py-mine"; + repo = "mcstatus"; + rev = "refs/tags/v${version}"; + hash = "sha256-1jPIsFEJ17kjtCBiX4IvSf2FxYw9DkH3MrrJ85N71tc="; + }; + }); + notifications-android-tv = super.notifications-android-tv.overridePythonAttrs (oldAttrs: rec { version = "0.1.5"; format = "setuptools"; @@ -219,6 +266,18 @@ let }; }); + pyaussiebb = super.pyaussiebb.overridePythonAttrs (oldAttrs: rec { + version = "0.0.18"; + src = fetchFromGitHub { + owner = "yaleman"; + repo = "aussiebb"; + rev = "refs/tags/v${version}"; + hash = "sha256-tEdddVsLFCHRvyLCctDakioiop2xWaJlfGE16P1ukHc="; + }; + }); + + pydantic = super.pydantic_1; + pydexcom = super.pydexcom.overridePythonAttrs (oldAttrs: rec { version = "0.2.3"; src = fetchFromGitHub { @@ -287,6 +346,35 @@ let }; }); + tesla-powerwall = super.tesla-powerwall.overridePythonAttrs (oldAttrs: rec { + version = "0.3.19"; + src = fetchFromGitHub { + owner = "jrester"; + repo = "tesla_powerwall"; + rev = "refs/tags/v${version}"; + hash = "sha256-ClrMgPAMBtDMfD6hCJIN1u4mp75QW+c3re28v3FreQg="; + }; + }); + + versioningit = super.versioningit.overridePythonAttrs (oldAttrs: rec { + version = "2.2.0"; + src = fetchPypi { + inherit (oldAttrs) pname; + inherit version; + hash = "sha256-6xjnunJoqIC/HM/pLlNOlqs04Dl/KNy8s/wNpPaltr0="; + }; + }); + + voluptuous = super.voluptuous.overridePythonAttrs (oldAttrs: rec { + version = "0.13.1"; + src = fetchFromGitHub { + owner = "alecthomas"; + repo = "voluptuous"; + rev = "refs/tags/${version}"; + hash = "sha256-cz3Bd+/yPh+VOHxzi/W+gbDh/H5Nl/n4jvxDOirmAVk="; + }; + }); + # Pinned due to API changes ~1.0 vultr = super.vultr.overridePythonAttrs (oldAttrs: rec { version = "0.1.2"; @@ -298,6 +386,29 @@ let }; }); + xbox-webapi = super.xbox-webapi.overridePythonAttrs (oldAttrs: rec { + version = "2.0.11"; + src = fetchFromGitHub { + owner = "OpenXbox"; + repo = "xbox-webapi-python"; + rev = "refs/tags/v${version}"; + hash = "sha256-fzMB+I8+ZTJUiZovcuj+d5GdHY9BJyJd6j92EhJeIFI="; + }; + postPatch = '' + sed -i '/pytest-runner/d' setup.py + ''; + propagatedBuildInputs = with self; [ + aiohttp + appdirs + ms-cv + pydantic + ecdsa + ]; + nativeCheckInputs = with self; [ + aresponses + ]; + }); + # internal python packages only consumed by home-assistant itself home-assistant-frontend = self.callPackage ./frontend.nix { }; home-assistant-intents = self.callPackage ./intents.nix { }; @@ -352,27 +463,19 @@ in python.pkgs.buildPythonApplication rec { nativeBuildInputs = with python.pkgs; [ pythonRelaxDepsHook setuptools - wheel ]; pythonRelaxDeps = [ - "aiohttp" - "attrs" "awesomeversion" - "bcrypt" "ciso8601" "cryptography" - "home-assistant-bluetooth" "httpx" - "ifaddr" + "lru-dict" "orjson" - "pip" - "PyJWT" - "pyOpenSSL" - "PyYAML" - "requests" + "pyopenssl" "typing-extensions" - "voluptuous-serialize" + "urllib3" + "voluptuous" "yarl" ]; @@ -403,6 +506,9 @@ in python.pkgs.buildPythonApplication rec { propagatedBuildInputs = with python.pkgs; [ # Only packages required in pyproject.toml aiohttp + aiohttp-cors + aiohttp-fast-url-dispatcher + aiohttp-zlib-ng astral async-timeout atomicwrites-homeassistant diff --git a/pkgs/servers/http/apache-httpd/2.4.nix b/pkgs/servers/http/apache-httpd/2.4.nix index c6e7ad1f56616..27cfd755bcdd2 100644 --- a/pkgs/servers/http/apache-httpd/2.4.nix +++ b/pkgs/servers/http/apache-httpd/2.4.nix @@ -42,6 +42,12 @@ stdenv.mkDerivation rec { url = "https://github.com/apache/httpd/commit/918620a183d843fb393ed939423a25d42c1044ec.patch"; hash = "sha256-YZi3t++hjM0skisax2xuh9DifZVZjCjVn6XQr6QKGEs="; }) + ] ++ lib.optionals libxml2Support [ + (fetchpatch { + name = "compat-with-libxml2-2.12.patch"; + url = "https://github.com/apache/httpd/commit/27a68e54b7c6d2ae80dca396fd2727852897dab1.patch"; + hash = "sha256-k2EqCaDkckrXLsHnjP4h+b1brTnde4pUyrbOiPFB6qk="; + }) ]; postPatch = '' diff --git a/pkgs/servers/ldap/lldap/default.nix b/pkgs/servers/ldap/lldap/default.nix index ac55ac025d135..892fa3a10c365 100644 --- a/pkgs/servers/ldap/lldap/default.nix +++ b/pkgs/servers/ldap/lldap/default.nix @@ -7,7 +7,6 @@ , nixosTests , rustPlatform , rustc -, rustc-wasm32 , stdenv , wasm-bindgen-cli , wasm-pack @@ -48,7 +47,7 @@ let pname = commonDerivationAttrs.pname + "-frontend"; nativeBuildInputs = [ - wasm-pack wasm-bindgen-84 binaryen which rustc-wasm32 rustc-wasm32.llvmPackages.lld + wasm-pack wasm-bindgen-84 binaryen which rustc rustc.llvmPackages.lld ]; buildPhase = '' diff --git a/pkgs/servers/pinnwand/default.nix b/pkgs/servers/pinnwand/default.nix index 86e05cfed45ac..fac861d56b02a 100644 --- a/pkgs/servers/pinnwand/default.nix +++ b/pkgs/servers/pinnwand/default.nix @@ -18,12 +18,13 @@ with python3.pkgs; buildPythonApplication rec { nativeBuildInputs = [ poetry-core + pythonRelaxDepsHook ]; - postPatch = '' - substituteInPlace pyproject.toml \ - --replace 'sqlalchemy = "^1.4"' 'sqlalchemy = "*"' - ''; + pythonRelaxDeps = [ + "docutils" + "sqlalchemy" + ]; propagatedBuildInputs = [ click diff --git a/pkgs/servers/search/khoj/default.nix b/pkgs/servers/search/khoj/default.nix index 058fe91ab7653..b09864492d7fc 100644 --- a/pkgs/servers/search/khoj/default.nix +++ b/pkgs/servers/search/khoj/default.nix @@ -2,74 +2,83 @@ , stdenv , fetchFromGitHub , python3 -, qt6 +, postgresql +, postgresqlTestHook }: python3.pkgs.buildPythonApplication rec { pname = "khoj"; - version = "0.3.0"; - format = "pyproject"; + version = "1.0.1"; + pyproject = true; src = fetchFromGitHub { owner = "debanjum"; repo = "khoj"; rev = "refs/tags/${version}"; - hash = "sha256-9kKK0DXpLfPB2LMnYcC6BKgZaoRsNHBZVe4thI7b9tk="; + hash = "sha256-lvOeYTrvW5MfhuJ3lj9n9TRlvpRwVP2vFeaEeJdqIec="; }; - SETUPTOOLS_SCM_PRETEND_VERSION = version; - - postPatch = '' - substituteInPlace pyproject.toml \ - --replace "dateparser == 1.1.1" "dateparser" \ - --replace "defusedxml == 0.7.1" ""defusedxml"" \ - --replace "fastapi == 0.77.1" "fastapi" \ - --replace "jinja2 == 3.1.2" "jinja2" \ - --replace "openai == 0.20.0" "openai" \ - --replace "pillow == 9.3.0" "pillow" \ - --replace "pydantic == 1.9.1" "pydantic" \ - --replace "pyyaml == 6.0" "pyyaml" \ - --replace "pyqt6 == 6.3.1" "pyqt6" \ - --replace "rich >= 13.3.1" "rich" \ - --replace "schedule == 1.1.0" "schedule" \ - --replace "sentence-transformers == 2.2.2" "sentence-transformers" \ - --replace "torch == 1.13.1" "torch" \ - --replace "uvicorn == 0.17.6" "uvicorn" - ''; + env = { + DJANGO_SETTINGS_MODULE = "khoj.app.settings"; + postgresqlEnableTCP = 1; + }; nativeBuildInputs = with python3.pkgs; [ hatch-vcs hatchling - ] ++ (with qt6; [ - wrapQtAppsHook - ]); - - buildInputs = lib.optionals stdenv.isLinux [ - qt6.qtwayland - ] ++ lib.optionals stdenv.isDarwin [ - qt6.qtbase ]; propagatedBuildInputs = with python3.pkgs; [ + aiohttp + anyio + authlib + beautifulsoup4 dateparser defusedxml + django fastapi + google-auth + # gpt4all + gunicorn + httpx + itsdangerous jinja2 - numpy + langchain + lxml openai + openai-whisper + pgvector pillow + psycopg2 pydantic - pyqt6 + pymupdf + python-multipart pyyaml + # rapidocr-onnxruntime + requests rich schedule sentence-transformers + stripe + tenacity + tiktoken torch + transformers + tzdata uvicorn ]; nativeCheckInputs = with python3.pkgs; [ + freezegun + factory-boy + pytest-xdist + trio + psutil + pytest-django pytestCheckHook + ] ++ [ + (postgresql.withPackages (p: with p; [ pgvector ])) + postgresqlTestHook ]; preCheck = '' @@ -82,32 +91,51 @@ python3.pkgs.buildPythonApplication rec { disabledTests = [ # Tests require network access - "test_search_with_valid_content_type" - "test_update_with_valid_content_type" - "test_regenerate_with_valid_content_type" - "test_image_search" - "test_notes_search" - "test_notes_search_with_only_filters" - "test_notes_search_with_include_filter" - "test_notes_search_with_exclude_filter" + "test_different_user_data_not_accessed" + "test_get_api_config_types" + "test_get_configured_types_via_api" "test_image_metadata" "test_image_search" - "test_image_search_query_truncated" "test_image_search_by_filepath" - "test_asymmetric_setup_with_missing_file_raises_error" - "test_asymmetric_setup_with_empty_file_raises_error" - "test_asymmetric_reload" - "test_asymmetric_setup" - "test_asymmetric_search" - "test_entry_chunking_by_max_tokens" - "test_incremental_update" + "test_image_search_query_truncated" + "test_index_update" + "test_index_update_with_no_auth_key" + "test_notes_search" + "test_notes_search_with_exclude_filter" + "test_notes_search_with_include_filter" + "test_parse_html_plaintext_file" + "test_regenerate_index_with_new_entry" + "test_regenerate_with_github_fails_without_pat" + "test_regenerate_with_invalid_content_type" + "test_regenerate_with_valid_content_type" + "test_search_for_user2_returns_empty" + "test_search_with_invalid_auth_key" + "test_search_with_invalid_content_type" + "test_search_with_no_auth_key" + "test_search_with_valid_content_type" + "test_text_index_same_if_content_unchanged" + "test_text_indexer_deletes_embedding_before_regenerate" + "test_text_search" + "test_text_search_setup_batch_processes" + "test_update_with_invalid_content_type" + "test_user_no_data_returns_empty" + + # Tests require rapidocr-onnxruntime + "test_multi_page_pdf_to_jsonl" + "test_single_page_pdf_to_jsonl" + "test_ocr_page_pdf_to_jsonl" + ]; + + disabledTestPaths = [ + # Tests require network access + "tests/test_conversation_utils.py" ]; meta = with lib; { description = "Natural Language Search Assistant for your Org-Mode and Markdown notes, Beancount transactions and Photos"; homepage = "https://github.com/debanjum/khoj"; changelog = "https://github.com/debanjum/khoj/releases/tag/${version}"; - license = licenses.gpl3Only; + license = licenses.agpl3Plus; maintainers = with maintainers; [ dit7ya ]; # src/tcmalloc.cc:333] Attempt to free invalid pointer broken = stdenv.isDarwin; diff --git a/pkgs/servers/sql/mariadb/connector-c/3_1.nix b/pkgs/servers/sql/mariadb/connector-c/3_1.nix index f5de11c7cc110..a51fc1d104b1e 100644 --- a/pkgs/servers/sql/mariadb/connector-c/3_1.nix +++ b/pkgs/servers/sql/mariadb/connector-c/3_1.nix @@ -2,5 +2,5 @@ callPackage ./. (args // { version = "3.1.21"; - hash = "sha256-PovyQvomT8+vGWS39/QjLauiGkSiuqKQpTrSXdyVyow="; + hash = "sha256-guN3Rcsb/EV4rxPE3yhJRSsT1+z44zUetg7ZBA4WjIc="; }) diff --git a/pkgs/servers/sql/mariadb/connector-c/3_2.nix b/pkgs/servers/sql/mariadb/connector-c/3_2.nix index d9ef5d8966fec..6619e261650c7 100644 --- a/pkgs/servers/sql/mariadb/connector-c/3_2.nix +++ b/pkgs/servers/sql/mariadb/connector-c/3_2.nix @@ -2,5 +2,5 @@ callPackage ./. (args // { version = "3.2.7"; - hash = "sha256-nXGWJI5ml8Ccc+Fz/psoIEX1XsnXrnQ8HrrQi56lbdo="; + hash = "sha256-F7s9fcbJiz6lsWrvlTpY+ZET8MPwlyWPKJZOvHEwBvo="; }) diff --git a/pkgs/servers/sql/mariadb/connector-c/3_3.nix b/pkgs/servers/sql/mariadb/connector-c/3_3.nix index ec70d9998283f..9f750fe8108be 100644 --- a/pkgs/servers/sql/mariadb/connector-c/3_3.nix +++ b/pkgs/servers/sql/mariadb/connector-c/3_3.nix @@ -2,5 +2,5 @@ callPackage ./. (args // { version = "3.3.5"; - hash = "sha256-ynLrJvbbK++nfkj/lm9xvNPLRLM72Lu4ELZebQEcHlw="; + hash = "sha256-RLHx8PyfbfIDr6X6ky5/w0XsGMFd+v5PgmQHvYOaf+k="; }) diff --git a/pkgs/servers/sql/mariadb/connector-c/default.nix b/pkgs/servers/sql/mariadb/connector-c/default.nix index 7a175620c7cbf..be4af113c1d9f 100644 --- a/pkgs/servers/sql/mariadb/connector-c/default.nix +++ b/pkgs/servers/sql/mariadb/connector-c/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchurl, cmake +{ lib, stdenv, fetchFromGitHub, cmake , curl, openssl, zlib, zstd , libiconv , version, hash, ... @@ -13,8 +13,10 @@ in stdenv.mkDerivation { pname = "mariadb-connector-c"; inherit version; - src = fetchurl { - url = "https://downloads.mariadb.com/Connectors/c/connector-c-${version}/mariadb-connector-c-${version}-src.tar.gz"; + src = fetchFromGitHub { + owner = "mariadb-corporation"; + repo = "mariadb-connector-c"; + rev = "v${version}"; inherit hash; }; diff --git a/pkgs/servers/sql/mariadb/default.nix b/pkgs/servers/sql/mariadb/default.nix index 6cd3e2c7a0147..3ff31ba1d3abe 100644 --- a/pkgs/servers/sql/mariadb/default.nix +++ b/pkgs/servers/sql/mariadb/default.nix @@ -58,6 +58,10 @@ let patches = [ ./patch/cmake-includedir.patch + + # Fix build with libxml 2.12 and Clang 16. + # https://github.com/MariaDB/server/pull/2983 + ./patch/0001-Fix-build-with-libxml2-2.12.patch ] # Fixes a build issue as documented on # https://jira.mariadb.org/browse/MDEV-26769?focusedCommentId=206073&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-206073 @@ -234,7 +238,6 @@ let ''; CXXFLAGS = lib.optionalString stdenv.hostPlatform.isi686 "-fpermissive"; - NIX_LDFLAGS = lib.optionalString stdenv.hostPlatform.isRiscV "-latomic"; }); in server // { diff --git a/pkgs/servers/sql/mariadb/patch/0001-Fix-build-with-libxml2-2.12.patch b/pkgs/servers/sql/mariadb/patch/0001-Fix-build-with-libxml2-2.12.patch new file mode 100644 index 0000000000000..a12dfb73d09de --- /dev/null +++ b/pkgs/servers/sql/mariadb/patch/0001-Fix-build-with-libxml2-2.12.patch @@ -0,0 +1,167 @@ +From 1f1ee5d3776af7ef56ffa3f4dcd22532c2c86c74 Mon Sep 17 00:00:00 2001 +From: Jan Tojnar <jtojnar@gmail.com> +Date: Sun, 7 Jan 2024 10:19:54 +0100 +Subject: [PATCH] Fix build with libxml2 2.12 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +libxml2 2.12.0 made `xmlGetLastError()` return `const` pointer: + +https://gitlab.gnome.org/GNOME/libxml2/-/commit/61034116d0a3c8b295c6137956adc3ae55720711 + +Clang 16 does not like this: + + error: assigning to 'xmlErrorPtr' (aka '_xmlError *') from 'const xmlError *' (aka 'const _xmlError *') discards qualifiers + error: cannot initialize a variable of type 'xmlErrorPtr' (aka '_xmlError *') with an rvalue of type 'const xmlError *' (aka 'const _xmlError *') + +Let’s update the variables to `const`. +For older versions, it will be automatically converted. + +But then `xmlResetError(xmlError*)` will not like the `const` pointer: + + error: no matching function for call to 'xmlResetError' + note: candidate function not viable: 1st argument ('const xmlError *' (aka 'const _xmlError *')) would lose const qualifier + +Let’s replace it with `xmlResetLastError()`. + +ALso remove `LIBXMLDOC::Xerr` protected member property. +It was introduced in 65b0e5455b547a3d574fa77b34cce23ae3bea0a0 +along with the `xmlResetError` calls. +It does not appear to be used for anything. +--- + storage/connect/libdoc.cpp | 39 +++++++++++++++++++------------------- + 1 file changed, 19 insertions(+), 20 deletions(-) + +diff --git a/storage/connect/libdoc.cpp b/storage/connect/libdoc.cpp +index e414aa88355..10edcbc3ffa 100644 +--- a/storage/connect/libdoc.cpp ++++ b/storage/connect/libdoc.cpp +@@ -93,7 +93,6 @@ class LIBXMLDOC : public XMLDOCUMENT { + xmlXPathContextPtr Ctxp; + xmlXPathObjectPtr Xop; + xmlXPathObjectPtr NlXop; +- xmlErrorPtr Xerr; + char *Buf; // Temporary + bool Nofreelist; + }; // end of class LIBXMLDOC +@@ -327,7 +326,6 @@ LIBXMLDOC::LIBXMLDOC(char *nsl, char *nsdf, char *enc, PFBLOCK fp) + Ctxp = NULL; + Xop = NULL; + NlXop = NULL; +- Xerr = NULL; + Buf = NULL; + Nofreelist = false; + } // end of LIBXMLDOC constructor +@@ -365,8 +363,8 @@ bool LIBXMLDOC::ParseFile(PGLOBAL g, char *fn) + Encoding = (char*)Docp->encoding; + + return false; +- } else if ((Xerr = xmlGetLastError())) +- xmlResetError(Xerr); ++ } else if (xmlGetLastError()) ++ xmlResetLastError(); + + return true; + } // end of ParseFile +@@ -505,9 +503,9 @@ int LIBXMLDOC::DumpDoc(PGLOBAL g, char *ofn) + #if 1 + // This function does not crash ( + if (xmlSaveFormatFileEnc((const char *)ofn, Docp, Encoding, 0) < 0) { +- xmlErrorPtr err = xmlGetLastError(); ++ const xmlError *err = xmlGetLastError(); + strcpy(g->Message, (err) ? err->message : "Error saving XML doc"); +- xmlResetError(Xerr); ++ xmlResetLastError(); + rc = -1; + } // endif Save + // rc = xmlDocDump(of, Docp); +@@ -546,8 +544,8 @@ void LIBXMLDOC::CloseDoc(PGLOBAL g, PFBLOCK xp) + if (Nlist) { + xmlXPathFreeNodeSet(Nlist); + +- if ((Xerr = xmlGetLastError())) +- xmlResetError(Xerr); ++ if (xmlGetLastError()) ++ xmlResetLastError(); + + Nlist = NULL; + } // endif Nlist +@@ -555,8 +553,8 @@ void LIBXMLDOC::CloseDoc(PGLOBAL g, PFBLOCK xp) + if (Xop) { + xmlXPathFreeObject(Xop); + +- if ((Xerr = xmlGetLastError())) +- xmlResetError(Xerr); ++ if (xmlGetLastError()) ++ xmlResetLastError(); + + Xop = NULL; + } // endif Xop +@@ -564,8 +562,8 @@ void LIBXMLDOC::CloseDoc(PGLOBAL g, PFBLOCK xp) + if (NlXop) { + xmlXPathFreeObject(NlXop); + +- if ((Xerr = xmlGetLastError())) +- xmlResetError(Xerr); ++ if (xmlGetLastError()) ++ xmlResetLastError(); + + NlXop = NULL; + } // endif NlXop +@@ -573,8 +571,8 @@ void LIBXMLDOC::CloseDoc(PGLOBAL g, PFBLOCK xp) + if (Ctxp) { + xmlXPathFreeContext(Ctxp); + +- if ((Xerr = xmlGetLastError())) +- xmlResetError(Xerr); ++ if (xmlGetLastError()) ++ xmlResetLastError(); + + Ctxp = NULL; + } // endif Ctxp +@@ -590,6 +588,7 @@ void LIBXMLDOC::CloseDoc(PGLOBAL g, PFBLOCK xp) + /******************************************************************/ + xmlNodeSetPtr LIBXMLDOC::GetNodeList(PGLOBAL g, xmlNodePtr np, char *xp) + { ++ const xmlError *xerr; + xmlNodeSetPtr nl; + + if (trace(1)) +@@ -649,11 +648,11 @@ xmlNodeSetPtr LIBXMLDOC::GetNodeList(PGLOBAL g, xmlNodePtr np, char *xp) + } else + xmlXPathFreeObject(Xop); // Caused node not found + +- if ((Xerr = xmlGetLastError())) { +- strcpy(g->Message, Xerr->message); +- xmlResetError(Xerr); ++ if ((xerr = xmlGetLastError())) { ++ strcpy(g->Message, xerr->message); ++ xmlResetLastError(); + return NULL; +- } // endif Xerr ++ } // endif xerr + + } // endif Xop + +@@ -1079,7 +1078,7 @@ void XML2NODE::AddText(PGLOBAL g, PCSZ txtp) + /******************************************************************/ + void XML2NODE::DeleteChild(PGLOBAL g, PXNODE dnp) + { +- xmlErrorPtr xerr; ++ const xmlError *xerr; + + if (trace(1)) + htrc("DeleteChild: node=%p\n", dnp); +@@ -1122,7 +1121,7 @@ void XML2NODE::DeleteChild(PGLOBAL g, PXNODE dnp) + if (trace(1)) + htrc("DeleteChild: errmsg=%-.256s\n", xerr->message); + +- xmlResetError(xerr); ++ xmlResetLastError(); + } // end of DeleteChild + + /* -------------------- class XML2NODELIST ---------------------- */ +-- +2.42.0 + diff --git a/pkgs/servers/sql/postgresql/default.nix b/pkgs/servers/sql/postgresql/default.nix index ec2f95f5bd55b..69acb0cd1a85d 100644 --- a/pkgs/servers/sql/postgresql/default.nix +++ b/pkgs/servers/sql/postgresql/default.nix @@ -5,6 +5,7 @@ let { stdenv, lib, fetchurl, makeWrapper, fetchpatch , glibc, zlib, readline, openssl, icu, lz4, zstd, systemd, libossp_uuid , pkg-config, libxml2, tzdata, libkrb5, substituteAll, darwin + , linux-pam # This is important to obtain a version of `libpq` that does not depend on systemd. , enableSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd && !stdenv.hostPlatform.isStatic @@ -63,6 +64,7 @@ let ++ lib.optionals zstdEnabled [ zstd ] ++ lib.optionals enableSystemd [ systemd ] ++ lib.optionals gssSupport [ libkrb5 ] + ++ lib.optionals stdenv'.isLinux [ linux-pam ] ++ lib.optionals (!stdenv'.isDarwin) [ libossp_uuid ]; nativeBuildInputs = [ @@ -96,7 +98,8 @@ let ++ lib.optionals zstdEnabled [ "--with-zstd" ] ++ lib.optionals gssSupport [ "--with-gssapi" ] ++ lib.optionals stdenv'.hostPlatform.isRiscV [ "--disable-spinlocks" ] - ++ lib.optionals jitSupport [ "--with-llvm" ]; + ++ lib.optionals jitSupport [ "--with-llvm" ] + ++ lib.optionals stdenv'.isLinux [ "--with-pam" ]; patches = [ (if atLeast "16" then ./patches/disable-normalize_exec_path.patch @@ -106,6 +109,17 @@ let ./patches/specify_pkglibdir_at_runtime.patch ./patches/findstring.patch + # Fix build with libxml2 2.12.0 and -Wincompatible-function-pointer-types + (if atLeast "16" then + # https://www.postgresql.org/message-id/CACpMh%2BDMZVHM%2BiDSyqdcpK8sr7jd_HxxLJRNvGTzcLBE0W07QA%40mail.gmail.com + fetchurl { + url = "https://www.postgresql.org/message-id/attachment/152769/v1-0001-Make-PostgreSQL-work-with-newer-version-of-libxml.patch"; + hash = "sha256-1j5mtG++hFmYwfS98PdN1SmNI4T86q4FXvKLz2VeJyg="; + } + else + ./patches/libxml2.12-15.patch + ) + (substituteAll { src = ./locale-binary-path.patch; locale = "${if stdenv.isDarwin then darwin.adv_cmds else lib.getBin stdenv.cc.libc}/bin/locale"; diff --git a/pkgs/servers/sql/postgresql/patches/libxml2.12-15.patch b/pkgs/servers/sql/postgresql/patches/libxml2.12-15.patch new file mode 100644 index 0000000000000..13438c7d4bb75 --- /dev/null +++ b/pkgs/servers/sql/postgresql/patches/libxml2.12-15.patch @@ -0,0 +1,22 @@ +diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c +index 6411f56b998..0eb39fcfc26 100644 +--- a/src/backend/utils/adt/xml.c ++++ b/src/backend/utils/adt/xml.c +@@ -119,7 +119,7 @@ struct PgXmlErrorContext + + static xmlParserInputPtr xmlPgEntityLoader(const char *URL, const char *ID, + xmlParserCtxtPtr ctxt); +-static void xml_errorHandler(void *data, xmlErrorPtr error); ++static void xml_errorHandler(void *data, const xmlError *error); + static void xml_ereport_by_code(int level, int sqlcode, + const char *msg, int errcode); + static void chopStringInfoNewlines(StringInfo str); +@@ -1749,7 +1749,7 @@ xml_ereport(PgXmlErrorContext *errcxt, int level, int sqlcode, const char *msg) + * Error handler for libxml errors and warnings + */ + static void +-xml_errorHandler(void *data, xmlErrorPtr error) ++xml_errorHandler(void *data, const xmlError *error) + { + PgXmlErrorContext *xmlerrcxt = (PgXmlErrorContext *) data; + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) error->ctxt; |