From 35d24b51f536cf3ead96b284e862ef8d9fe47edc Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Thu, 15 Dec 2022 20:25:32 +0100 Subject: [PATCH] makeHardcodeGsettingsPatch: Rename from glib.mkHardcodeGsettingsPatch glib expression is messy enough as is. Also rename the `glib-schema-to-var` argument to `schemaIdToVariableMapping` to better match Nixpkgs coding style. --- .github/CODEOWNERS | 1 + .../evolution/evolution-ews/default.nix | 5 +- .../make-hardcode-gsettings-patch/default.nix | 60 +++++++++++++++++++ .../hardcode-gsettings.cocci | 0 .../core/evolution-data-server/default.nix | 5 +- pkgs/development/libraries/glib/default.nix | 60 ++++--------------- pkgs/top-level/all-packages.nix | 2 + 7 files changed, 80 insertions(+), 53 deletions(-) create mode 100644 pkgs/build-support/make-hardcode-gsettings-patch/default.nix rename pkgs/{development/libraries/glib => build-support/make-hardcode-gsettings-patch}/hardcode-gsettings.cocci (100%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 195f534e7c8..5385e4a1e0a 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -270,6 +270,7 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt # GNOME /pkgs/desktops/gnome @jtojnar /pkgs/desktops/gnome/extensions @piegamesde @jtojnar +/pkgs/build-support/make-hardcode-gsettings-patch @jtojnar # Cinnamon /pkgs/desktops/cinnamon @mkg20001 diff --git a/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix b/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix index ba5f5d10226..78a647bf015 100644 --- a/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix +++ b/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix @@ -17,6 +17,7 @@ , substituteAll , _experimental-update-script-combinators , glib +, makeHardcodeGsettingsPatch }: stdenv.mkDerivation rec { @@ -64,9 +65,9 @@ stdenv.mkDerivation rec { ]; passthru = { - hardcodeGsettingsPatch = glib.mkHardcodeGsettingsPatch { + hardcodeGsettingsPatch = makeHardcodeGsettingsPatch { inherit src; - glib-schema-to-var = { + schemaIdToVariableMapping = { "org.gnome.evolution.mail" = "evo"; "org.gnome.evolution.calendar" = "evo"; }; diff --git a/pkgs/build-support/make-hardcode-gsettings-patch/default.nix b/pkgs/build-support/make-hardcode-gsettings-patch/default.nix new file mode 100644 index 00000000000..a1d2de21c4c --- /dev/null +++ b/pkgs/build-support/make-hardcode-gsettings-patch/default.nix @@ -0,0 +1,60 @@ +{ + runCommand, + git, + coccinelle, + python3, +}: + +/* + Can be used as part of an update script to automatically create a patch + hardcoding the path of all GSettings schemas in C code. + For example: + passthru = { + hardcodeGsettingsPatch = makeHardcodeGsettingsPatch { + inherit src; + schemaIdToVariableMapping = { + ... + }; + }; + + updateScript = + let + updateSource = ...; + updatePatch = _experimental-update-script-combinators.copyAttrOutputToFile "evolution-ews.hardcodeGsettingsPatch" ./hardcode-gsettings.patch; + in + _experimental-update-script-combinators.sequence [ + updateSource + updatePatch + ]; + }; + } + takes as input a mapping from schema path to variable name. + For example `{ "org.gnome.evolution" = "EVOLUTION_SCHEMA_PATH"; }` + hardcodes looking for `org.gnome.evolution` into `@EVOLUTION_SCHEMA_PATH@`. + All schemas must be listed. +*/ +{ + src, + schemaIdToVariableMapping, +}: + +runCommand + "hardcode-gsettings.patch" + { + inherit src; + nativeBuildInputs = [ + git + coccinelle + python3 # For patch script + ]; + } + '' + unpackPhase + cd "''${sourceRoot:-.}" + set -x + cp ${builtins.toFile "glib-schema-to-var.json" (builtins.toJSON schemaIdToVariableMapping)} ./glib-schema-to-var.json + git init + git add -A + spatch --sp-file "${./hardcode-gsettings.cocci}" --dir . --in-place + git diff > "$out" + '' diff --git a/pkgs/development/libraries/glib/hardcode-gsettings.cocci b/pkgs/build-support/make-hardcode-gsettings-patch/hardcode-gsettings.cocci similarity index 100% rename from pkgs/development/libraries/glib/hardcode-gsettings.cocci rename to pkgs/build-support/make-hardcode-gsettings-patch/hardcode-gsettings.cocci diff --git a/pkgs/desktops/gnome/core/evolution-data-server/default.nix b/pkgs/desktops/gnome/core/evolution-data-server/default.nix index 3b0a5caa59f..bdde8160ca5 100644 --- a/pkgs/desktops/gnome/core/evolution-data-server/default.nix +++ b/pkgs/desktops/gnome/core/evolution-data-server/default.nix @@ -45,6 +45,7 @@ , boost , protobuf , libiconv +, makeHardcodeGsettingsPatch }: stdenv.mkDerivation rec { @@ -150,8 +151,8 @@ stdenv.mkDerivation rec { ''; passthru = { - hardcodeGsettingsPatch = glib.mkHardcodeGsettingsPatch { - glib-schema-to-var = { + hardcodeGsettingsPatch = makeHardcodeGsettingsPatch { + schemaIdToVariableMapping = { "org.gnome.Evolution.DefaultSources" = "EDS"; "org.gnome.evolution.shell.network-config" = "EDS"; "org.gnome.evolution-data-server.addressbook" = "EDS"; diff --git a/pkgs/development/libraries/glib/default.nix b/pkgs/development/libraries/glib/default.nix index 12f46af022f..39a372fe143 100644 --- a/pkgs/development/libraries/glib/default.nix +++ b/pkgs/development/libraries/glib/default.nix @@ -18,8 +18,7 @@ , coreutils, dbus, libxml2, tzdata , desktop-file-utils, shared-mime-info , darwin -# update script -, runCommand, git, coccinelle +, makeHardcodeGsettingsPatch }: assert stdenv.isLinux -> util-linuxMinimal != null; @@ -271,55 +270,18 @@ stdenv.mkDerivation (finalAttrs: { packageName = "glib"; versionPolicy = "odd-unstable"; }; - /* - can be used as part of an update script to automatically create a patch - hardcoding the path of all gsettings schemas in C code. - For example: - passthru = { - hardcodeGsettingsPatch = glib.mkHardcodeGsettingsPatch { - inherit src; - glib-schema-to-var = { - ... - }; - }; - updateScript = - let - updateSource = ...; - patch = _experimental-update-script-combinators.copyAttrOutputToFile "evolution-ews.hardcodeGsettingsPatch" ./hardcode-gsettings.patch; - in - _experimental-update-script-combinators.sequence [ - updateSource - patch - ]; - }; - } - takes as input a mapping from schema path to variable name. - For example `{ "org.gnome.evolution" = "EVOLUTION_SCHEMA_PATH"; }` - hardcodes looking for `org.gnome.evolution` into `@EVOLUTION_SCHEMA_PATH@`. - All schemas must be listed. - */ - mkHardcodeGsettingsPatch = { src, glib-schema-to-var }: - runCommand - "hardcode-gsettings.patch" - { + mkHardcodeGsettingsPatch = + { + src, + glib-schema-to-var, + }: + builtins.trace + "glib.mkHardcodeGsettingsPatch is deprecated, please use makeHardcodeGsettingsPatch instead" + (makeHardcodeGsettingsPatch { inherit src; - nativeBuildInputs = [ - git - coccinelle - python3 # For patch script - ]; - } - '' - unpackPhase - cd "''${sourceRoot:-.}" - set -x - cp ${builtins.toFile "glib-schema-to-var.json" (builtins.toJSON glib-schema-to-var)} ./glib-schema-to-var.json - git init - git add -A - spatch --sp-file "${./hardcode-gsettings.cocci}" --dir . --in-place - git diff > "$out" - ''; + schemaIdToVariableMapping = glib-schema-to-var; + }); }; meta = with lib; { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8ccdec4f557..97e5ba04c0c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1085,6 +1085,8 @@ with pkgs; { deps = [ lcov enableGCOVInstrumentation ]; } ../build-support/setup-hooks/make-coverage-analysis-report.sh; + makeHardcodeGsettingsPatch = callPackage ../build-support/make-hardcode-gsettings-patch { }; + # intended to be used like nix-build -E 'with import {}; enableDebugging fooPackage' enableDebugging = pkg: pkg.override { stdenv = stdenvAdapters.keepDebugInfo pkg.stdenv; };