diff options
100 files changed, 1057 insertions, 852 deletions
diff --git a/doc/stdenv/stdenv.chapter.md b/doc/stdenv/stdenv.chapter.md index 5f7f45dc443..da30807beea 100644 --- a/doc/stdenv/stdenv.chapter.md +++ b/doc/stdenv/stdenv.chapter.md @@ -731,6 +731,10 @@ If set, files in `$out/sbin` are not moved to `$out/bin`. By default, they are. List of directories to search for libraries and executables from which *all* symbols should be stripped. By default, it’s empty. Stripping all symbols is risky, since it may remove not just debug symbols but also ELF information necessary for normal execution. +##### `stripAllListTarget` {#var-stdenv-stripAllListTarget} + +Like `stripAllList`, but only applies to packages’ target platform. By default, it’s empty. Useful when supporting cross compilation. + ##### `stripAllFlags` {#var-stdenv-stripAllFlags} Flags passed to the `strip` command applied to the files in the directories listed in `stripAllList`. Defaults to `-s` (i.e. `--strip-all`). @@ -739,6 +743,10 @@ Flags passed to the `strip` command applied to the files in the directories list List of directories to search for libraries and executables from which only debugging-related symbols should be stripped. It defaults to `lib lib32 lib64 libexec bin sbin`. +##### `stripDebugListTarget` {#var-stdenv-stripDebugListTarget} + +Like `stripDebugList`, but only applies to packages’ target platform. By default, it’s empty. Useful when supporting cross compilation. + ##### `stripDebugFlags` {#var-stdenv-stripDebugFlags} Flags passed to the `strip` command applied to the files in the directories listed in `stripDebugList`. Defaults to `-S` (i.e. `--strip-debug`). @@ -913,9 +921,9 @@ substitute ./foo.in ./foo.out \ --subst-var someVar ``` -### `substituteInPlace` \<file\> \<subs\> {#fun-substituteInPlace} +### `substituteInPlace` \<multiple files\> \<subs\> {#fun-substituteInPlace} -Like `substitute`, but performs the substitutions in place on the file \<file\>. +Like `substitute`, but performs the substitutions in place on the files passed. ### `substituteAll` \<infile\> \<outfile\> {#fun-substituteAll} diff --git a/nixos/modules/services/databases/openldap.nix b/nixos/modules/services/databases/openldap.nix index a16a920dfdb..9bb06404394 100644 --- a/nixos/modules/services/databases/openldap.nix +++ b/nixos/modules/services/databases/openldap.nix @@ -3,7 +3,6 @@ with lib; let cfg = config.services.openldap; - legacyOptions = [ "rootpwFile" "suffix" "dataDir" "rootdn" "rootpw" ]; openldap = cfg.package; configDir = if cfg.configDir != null then cfg.configDir else "/etc/openldap/slapd.d"; @@ -11,7 +10,15 @@ let # Can't do types.either with multiple non-overlapping submodules, so define our own singleLdapValueType = lib.mkOptionType rec { name = "LDAP"; - description = "LDAP value"; + # TODO: It would be nice to define a { secret = ...; } option, using + # systemd's LoadCredentials for secrets. That would remove the last + # barrier to using DynamicUser for openldap. This is blocked on + # systemd/systemd#19604 + description = '' + LDAP value - either a string, or an attrset containing + <literal>path</literal> or <literal>base64</literal> for included + values or base-64 encoded values respectively. + ''; check = x: lib.isString x || (lib.isAttrs x && (x ? path || x ? base64)); merge = lib.mergeEqualOption; }; @@ -76,52 +83,12 @@ let lib.flatten (lib.mapAttrsToList (name: value: attrsToLdif "${name},${dn}" value) children) ); in { - imports = let - deprecationNote = "This option is removed due to the deprecation of `slapd.conf` upstream. Please migrate to `services.openldap.settings`, see the release notes for advice with this process."; - mkDatabaseOption = old: new: - lib.mkChangedOptionModule [ "services" "openldap" old ] [ "services" "openldap" "settings" "children" ] - (config: let - database = lib.getAttrFromPath [ "services" "openldap" "database" ] config; - value = lib.getAttrFromPath [ "services" "openldap" old ] config; - in lib.setAttrByPath ([ "olcDatabase={1}${database}" "attrs" ] ++ new) value); - in [ - (lib.mkRemovedOptionModule [ "services" "openldap" "extraConfig" ] deprecationNote) - (lib.mkRemovedOptionModule [ "services" "openldap" "extraDatabaseConfig" ] deprecationNote) - - (lib.mkChangedOptionModule [ "services" "openldap" "logLevel" ] [ "services" "openldap" "settings" "attrs" "olcLogLevel" ] - (config: lib.splitString " " (lib.getAttrFromPath [ "services" "openldap" "logLevel" ] config))) - (lib.mkChangedOptionModule [ "services" "openldap" "defaultSchemas" ] [ "services" "openldap" "settings" "children" "cn=schema" "includes"] - (config: lib.optionals (lib.getAttrFromPath [ "services" "openldap" "defaultSchemas" ] config) ( - map (schema: "${openldap}/etc/schema/${schema}.ldif") [ "core" "cosine" "inetorgperson" "nis" ]))) - - (lib.mkChangedOptionModule [ "services" "openldap" "database" ] [ "services" "openldap" "settings" "children" ] - (config: let - database = lib.getAttrFromPath [ "services" "openldap" "database" ] config; - in { - "olcDatabase={1}${database}".attrs = { - # objectClass is case-insensitive, so don't need to capitalize ${database} - objectClass = [ "olcdatabaseconfig" "olc${database}config" ]; - olcDatabase = "{1}${database}"; - olcDbDirectory = lib.mkDefault "/var/db/openldap"; - }; - "cn=schema".includes = lib.mkDefault ( - map (schema: "${openldap}/etc/schema/${schema}.ldif") [ "core" "cosine" "inetorgperson" "nis" ] - ); - })) - (mkDatabaseOption "rootpwFile" [ "olcRootPW" "path" ]) - (mkDatabaseOption "suffix" [ "olcSuffix" ]) - (mkDatabaseOption "dataDir" [ "olcDbDirectory" ]) - (mkDatabaseOption "rootdn" [ "olcRootDN" ]) - (mkDatabaseOption "rootpw" [ "olcRootPW" ]) - ]; options = { services.openldap = { enable = mkOption { type = types.bool; default = false; - description = " - Whether to enable the ldap server. - "; + description = "Whether to enable the ldap server."; }; package = mkOption { @@ -186,7 +153,7 @@ in { attrs = { objectClass = [ "olcDatabaseConfig" "olcMdbConfig" ]; olcDatabase = "{1}mdb"; - olcDbDirectory = "/var/db/ldap"; + olcDbDirectory = "/var/lib/openldap/ldap"; olcDbIndex = [ "objectClass eq" "cn pres,eq" @@ -208,10 +175,20 @@ in { default = null; description = '' Use this config directory instead of generating one from the - <literal>settings</literal> option. Overrides all NixOS settings. If - you use this option,ensure `olcPidFile` is set to `/run/slapd/slapd.conf`. + <literal>settings</literal> option. Overrides all NixOS settings. + ''; + example = "/var/lib/openldap/slapd.d"; + }; + + mutableConfig = mkOption { + type = types.bool; + default = false; + description = '' + Whether to allow writable on-line configuration. If + <literal>true</literal>, the NixOS settings will only be used to + initialize the OpenLDAP configuration if it does not exist, and are + subsequently ignored. ''; - example = "/var/db/slapd.d"; }; declarativeContents = mkOption { @@ -225,6 +202,11 @@ in { reboot of the server. Performance-wise the database and indexes are rebuilt on each server startup, so this will slow down server startup, especially with large databases. + + Note that the root of the DB must be defined in + <code>services.openldap.settings</code> and the + <code>olcDbDirectory</code> must begin with + <literal>"/var/lib/openldap"</literal>. ''; example = lib.literalExpression '' { @@ -247,11 +229,54 @@ in { meta.maintainers = with lib.maintainers; [ kwohlfahrt ]; - config = mkIf cfg.enable { - assertions = map (opt: { - assertion = ((getAttr opt cfg) != "_mkMergedOptionModule") -> (cfg.database != "_mkMergedOptionModule"); - message = "Legacy OpenLDAP option `services.openldap.${opt}` requires `services.openldap.database` (use value \"mdb\" if unsure)"; - }) legacyOptions; + config = let + dbSettings = mapAttrs' (name: { attrs, ... }: nameValuePair attrs.olcSuffix attrs) + (filterAttrs (name: { attrs, ... }: (hasPrefix "olcDatabase=" name) && attrs ? olcSuffix) cfg.settings.children); + settingsFile = pkgs.writeText "config.ldif" (lib.concatStringsSep "\n" (attrsToLdif "cn=config" cfg.settings)); + writeConfig = pkgs.writeShellScript "openldap-config" '' + set -euo pipefail + + ${lib.optionalString (!cfg.mutableConfig) '' + chmod -R u+w ${configDir} + rm -rf ${configDir}/* + ''} + if [ ! -e "${configDir}/cn=config.ldif" ]; then + ${openldap}/bin/slapadd -F ${configDir} -bcn=config -l ${settingsFile} + fi + chmod -R ${if cfg.mutableConfig then "u+rw" else "u+r-w"} ${configDir} + ''; + + contentsFiles = mapAttrs (dn: ldif: pkgs.writeText "${dn}.ldif" ldif) cfg.declarativeContents; + writeContents = pkgs.writeShellScript "openldap-load" '' + set -euo pipefail + + rm -rf $2/* + ${openldap}/bin/slapadd -F ${configDir} -b $1 -l $3 + ''; + in mkIf cfg.enable { + assertions = [{ + assertion = (cfg.declarativeContents != {}) -> cfg.configDir == null; + message = '' + Declarative DB contents (${attrNames cfg.declarativeContents}) are not + supported with user-managed configuration. + ''; + }] ++ (map (dn: { + assertion = (getAttr dn dbSettings) ? "olcDbDirectory"; + # olcDbDirectory is necessary to prepopulate database using `slapadd`. + message = '' + Declarative DB ${dn} does not exist in `services.openldap.settings`, or does not have + `olcDbDirectory` configured. + ''; + }) (attrNames cfg.declarativeContents)) ++ (mapAttrsToList (dn: { olcDbDirectory ? null, ... }: { + # For forward compatibility with `DynamicUser`, and to avoid accidentally clobbering + # directories with `declarativeContents`. + assertion = (olcDbDirectory != null) -> + ((hasPrefix "/var/lib/openldap/" olcDbDirectory) && (olcDbDirectory != "/var/lib/openldap/")); + message = '' + Database ${dn} has `olcDbDirectory` (${olcDbDirectory}) that is not a subdirectory of + `/var/lib/openldap/`. + ''; + }) dbSettings); environment.systemPackages = [ openldap ]; # Literal attributes must always be set @@ -259,7 +284,6 @@ in { attrs = { objectClass = "olcGlobal"; cn = "config"; - olcPidFile = "/run/slapd/slapd.pid"; }; children."cn=schema".attrs = { cn = "schema"; @@ -276,44 +300,31 @@ in { ]; wantedBy = [ "multi-user.target" ]; after = [ "network-online.target" ]; - preStart = let - settingsFile = pkgs.writeText "config.ldif" (lib.concatStringsSep "\n" (attrsToLdif "cn=config" cfg.settings)); - - dbSettings = lib.filterAttrs (name: value: lib.hasPrefix "olcDatabase=" name) cfg.settings.children; - dataDirs = lib.mapAttrs' (name: value: lib.nameValuePair value.attrs.olcSuffix value.attrs.olcDbDirectory) - (lib.filterAttrs (_: value: value.attrs ? olcDbDirectory) dbSettings); - dataFiles = lib.mapAttrs (dn: contents: pkgs.writeText "${dn}.ldif" contents) cfg.declarativeContents; - mkLoadScript = dn: let - dataDir = lib.escapeShellArg (getAttr dn dataDirs); - in '' - rm -rf ${dataDir}/* - ${openldap}/bin/slapadd -F ${lib.escapeShellArg configDir} -b ${dn} -l ${getAttr dn dataFiles} - chown -R "${cfg.user}:${cfg.group}" ${dataDir} - ''; - in '' - mkdir -p /run/slapd - chown -R "${cfg.user}:${cfg.group}" /run/slapd - - mkdir -p ${lib.escapeShellArg configDir} ${lib.escapeShellArgs (lib.attrValues dataDirs)} - chown "${cfg.user}:${cfg.group}" ${lib.escapeShellArg configDir} ${lib.escapeShellArgs (lib.attrValues dataDirs)} - - ${lib.optionalString (cfg.configDir == null) ('' - rm -Rf ${configDir}/* - ${openldap}/bin/slapadd -F ${configDir} -bcn=config -l ${settingsFile} - '')} - chown -R "${cfg.user}:${cfg.group}" ${lib.escapeShellArg configDir} - - ${lib.concatStrings (map mkLoadScript (lib.attrNames cfg.declarativeContents))} - ${openldap}/bin/slaptest -u -F ${lib.escapeShellArg configDir} - ''; serviceConfig = { + User = cfg.user; + Group = cfg.group; + ExecStartPre = [ + "!${pkgs.coreutils}/bin/mkdir -p ${configDir}" + "+${pkgs.coreutils}/bin/chown $USER ${configDir}" + ] ++ (lib.optional (cfg.configDir == null) writeConfig) + ++ (mapAttrsToList (dn: content: lib.escapeShellArgs [ + writeContents dn (getAttr dn dbSettings).olcDbDirectory content + ]) contentsFiles) + ++ [ "${openldap}/bin/slaptest -u -F ${configDir}" ]; ExecStart = lib.escapeShellArgs ([ - "${openldap}/libexec/slapd" "-u" cfg.user "-g" cfg.group "-F" configDir - "-h" (lib.concatStringsSep " " cfg.urlList) + "${openldap}/libexec/slapd" "-d" "0" "-F" configDir "-h" (lib.concatStringsSep " " cfg.urlList) ]); Type = "notify"; + # Fixes an error where openldap attempts to notify from a thread + # outside the main process: + # Got notification message from PID 6378, but reception only permitted for main PID 6377 NotifyAccess = "all"; - PIDFile = cfg.settings.attrs.olcPidFile; + RuntimeDirectory = "openldap"; + StateDirectory = ["openldap"] + ++ (map ({olcDbDirectory, ... }: removePrefix "/var/lib/" olcDbDirectory) (attrValues dbSettings)); + StateDirectoryMode = "700"; + AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ]; + CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" ]; }; }; diff --git a/nixos/modules/system/boot/systemd.nix b/nixos/modules/system/boot/systemd.nix index c7b62871eb4..35280ee0736 100644 --- a/nixos/modules/system/boot/systemd.nix +++ b/nixos/modules/system/boot/systemd.nix @@ -592,6 +592,12 @@ in systemd.services.systemd-importd.environment = proxy_env; systemd.services.systemd-pstore.wantedBy = [ "sysinit.target" ]; # see #81138 + # NixOS has kernel modules in a different location, so override that here. + systemd.services.kmod-static-nodes.unitConfig.ConditionFileNotEmpty = [ + "" # required to unset the previous value! + "/run/booted-system/kernel-modules/lib/modules/%v/modules.devname" + ]; + # Don't bother with certain units in containers. systemd.services.systemd-remount-fs.unitConfig.ConditionVirtualization = "!container"; systemd.services.systemd-random-seed.unitConfig.ConditionVirtualization = "!container"; diff --git a/nixos/modules/system/boot/systemd/initrd.nix b/nixos/modules/system/boot/systemd/initrd.nix index 88e2bf9ac70..59cdc3077b1 100644 --- a/nixos/modules/system/boot/systemd/initrd.nix +++ b/nixos/modules/system/boot/systemd/initrd.nix @@ -420,6 +420,9 @@ in { services."systemd-makefs@" = lib.mkIf needMakefs { unitConfig.IgnoreOnIsolate = true; }; services."systemd-growfs@" = lib.mkIf needGrowfs { unitConfig.IgnoreOnIsolate = true; }; + # make sure all the /dev nodes are set up + services.systemd-tmpfiles-setup-dev.wantedBy = ["sysinit.target"]; + services.initrd-nixos-activation = { after = [ "initrd-fs.target" ]; requiredBy = [ "initrd.target" ]; diff --git a/nixos/tests/openldap.nix b/nixos/tests/openldap.nix index 3c388119d5d..075bb5d1f64 100644 --- a/nixos/tests/openldap.nix +++ b/nixos/tests/openldap.nix @@ -1,9 +1,4 @@ -{ pkgs ? (import ../.. { inherit system; config = { }; }) -, system ? builtins.currentSystem -, ... -}: - -let +import ./make-test-python.nix ({ pkgs, ... }: let dbContents = '' dn: dc=example objectClass: domain @@ -13,118 +8,149 @@ let objectClass: organizationalUnit ou: users ''; - testScript = '' - machine.wait_for_unit("openldap.service") - machine.succeed( - 'ldapsearch -LLL -D "cn=root,dc=example" -w notapassword -b "dc=example"', - ) + + ldifConfig = '' + dn: cn=config + cn: config + objectClass: olcGlobal + olcLogLevel: stats + + dn: cn=schema,cn=config + cn: schema + objectClass: olcSchemaConfig + + include: file://${pkgs.openldap}/etc/schema/core.ldif + include: file://${pkgs.openldap}/etc/schema/cosine.ldif + include: file://${pkgs.openldap}/etc/schema/inetorgperson.ldif + + dn: olcDatabase={0}config,cn=config + olcDatabase: {0}config + objectClass: olcDatabaseConfig + olcRootDN: cn=root,cn=config + olcRootPW: configpassword + + dn: olcDatabase={1}mdb,cn=config + objectClass: olcDatabaseConfig + objectClass: olcMdbConfig + olcDatabase: {1}mdb + olcDbDirectory: /var/db/openldap + olcDbIndex: objectClass eq + olcSuffix: dc=example + olcRootDN: cn=root,dc=example + olcRootPW: notapassword ''; + + ldapClientConfig = { + enable = true; + loginPam = false; + nsswitch = false; + server = "ldap://"; + base = "dc=example"; + }; + in { - # New-style configuration - current = import ./make-test-python.nix ({ pkgs, ... }: { - inherit testScript; - name = "openldap"; + name = "openldap"; + + nodes.machine = { pkgs, ... }: { + environment.etc."openldap/root_password".text = "notapassword"; - nodes.machine = { pkgs, ... }: { - environment.etc."openldap/root_password".text = "notapassword"; - services.openldap = { - enable = true; - settings = { - children = { - "cn=schema".includes = [ - "${pkgs.openldap}/etc/schema/core.ldif" - "${pkgs.openldap}/etc/schema/cosine.ldif" - "${pkgs.openldap}/etc/schema/inetorgperson.ldif" - "${pkgs.openldap}/etc/schema/nis.ldif" - ]; - "olcDatabase={1}mdb" = { - # This tests string, base64 and path values, as well as lists of string values - attrs = { - objectClass = [ "olcDatabaseConfig" "olcMdbConfig" ]; - olcDatabase = "{1}mdb"; - olcDbDirectory = "/var/db/openldap"; - olcSuffix = "dc=example"; - olcRootDN = { - # cn=root,dc=example - base64 = "Y249cm9vdCxkYz1leGFtcGxl"; - }; - olcRootPW = { - path = "/etc/openldap/root_password"; - }; + users.ldap = ldapClientConfig; + + services.openldap = { + enable = true; + urlList = [ "ldapi:///" "ldap://" ]; + settings = { + children = { + "cn=schema".includes = [ + "${pkgs.openldap}/etc/schema/core.ldif" + "${pkgs.openldap}/etc/schema/cosine.ldif" + "${pkgs.openldap}/etc/schema/inetorgperson.ldif" + "${pkgs.openldap}/etc/schema/nis.ldif" + ]; + "olcDatabase={0}config" = { + attrs = { + objectClass = [ "olcDatabaseConfig" ]; + olcDatabase = "{0}config"; + olcRootDN = "cn=root,cn=config"; + olcRootPW = "configpassword"; + }; + }; + "olcDatabase={1}mdb" = { + # This tests string, base64 and path values, as well as lists of string values + attrs = { + objectClass = [ "olcDatabaseConfig" "olcMdbConfig" ]; + olcDatabase = "{1}mdb"; + olcDbDirectory = "/var/lib/openldap/db"; + olcSuffix = "dc=example"; + olcRootDN = { + # cn=root,dc=example + base64 = "Y249cm9vdCxkYz1leGFtcGxl"; + }; + olcRootPW = { + path = "/etc/openldap/root_password"; }; }; }; }; - declarativeContents."dc=example" = dbContents; }; }; - }) { inherit pkgs system; }; - - # Old-style configuration - oldOptions = import ./make-test-python.nix ({ pkgs, ... }: { - inherit testScript; - name = "openldap"; - nodes.machine = { pkgs, ... }: { - services.openldap = { - enable = true; - logLevel = "stats acl"; - defaultSchemas = true; - database = "mdb"; - suffix = "dc=example"; - rootdn = "cn=root,dc=example"; - rootpw = "notapassword"; - declarativeContents."dc=example" = dbContents; + specialisation = { + declarativeContents.configuration = { ... }: { + services.openldap.declarativeContents."dc=example" = dbContents; }; - }; - }) { inherit system pkgs; }; - - # Manually managed configDir, for example if dynamic config is essential - manualConfigDir = import ./make-test-python.nix ({ pkgs, ... }: { - name = "openldap"; - - nodes.machine = { pkgs, ... }: { - services.openldap = { - enable = true; - configDir = "/var/db/slapd.d"; + mutableConfig.configuration = { ... }: { + services.openldap = { + declarativeContents."dc=example" = dbContents; + mutableConfig = true; + }; + }; + manualConfigDir = { + inheritParentConfig = false; + configuration = { ... }: { + users.ldap = ldapClientConfig; + services.openldap = { + enable = true; + configDir = "/var/db/slapd.d"; + }; + }; }; }; + }; + testScript = { nodes, ... }: let + specializations = "${nodes.machine.config.system.build.toplevel}/specialisation"; + changeRootPw = '' + dn: olcDatabase={1}mdb,cn=config + changetype: modify + replace: olcRootPW + olcRootPW: foobar + ''; + in '' + # Test startup with empty DB + machine.wait_for_unit("openldap.service") - testScript = let - contents = pkgs.writeText "data.ldif" dbContents; - config = pkgs.writeText "config.ldif" '' - dn: cn=config - cn: config - objectClass: olcGlobal - olcLogLevel: stats - olcPidFile: /run/slapd/slapd.pid - - dn: cn=schema,cn=config - cn: schema - objectClass: olcSchemaConfig + with subtest("declarative contents"): + machine.succeed('${specializations}/declarativeContents/bin/switch-to-configuration test') + machine.wait_for_unit("openldap.service") + machine.succeed('ldapsearch -LLL -D "cn=root,dc=example" -w notapassword') + machine.fail('ldapmodify -D cn=root,cn=config -w configpassword -f ${pkgs.writeText "rootpw.ldif" changeRootPw}') - include: file://${pkgs.openldap}/etc/schema/core.ldif - include: file://${pkgs.openldap}/etc/schema/cosine.ldif - include: file://${pkgs.openldap}/etc/schema/inetorgperson.ldif + with subtest("mutable config"): + machine.succeed('${specializations}/mutableConfig/bin/switch-to-configuration test') + machine.succeed('ldapsearch -LLL -D "cn=root,dc=example" -w notapassword') + machine.succeed('ldapmodify -D cn=root,cn=config -w configpassword -f ${pkgs.writeText "rootpw.ldif" changeRootPw}') + machine.succeed('ldapsearch -LLL -D "cn=root,dc=example" -w foobar') - dn: olcDatabase={1}mdb,cn=config - objectClass: olcDatabaseConfig - objectClass: olcMdbConfig - olcDatabase: {1}mdb - olcDbDirectory: /var/db/openldap - olcDbIndex: objectClass eq - olcSuffix: dc=example - olcRootDN: cn=root,dc=example - olcRootPW: notapassword - ''; - in '' + with subtest("manual config dir"): machine.succeed( - "mkdir -p /var/db/slapd.d /var/db/openldap", - "slapadd -F /var/db/slapd.d -n0 -l ${config}", - "slapadd -F /var/db/slapd.d -n1 -l ${contents}", - "chown -R openldap:openldap /var/db/slapd.d /var/db/openldap", - "systemctl restart openldap", + 'mkdir /var/db/slapd.d /var/db/openldap', + 'slapadd -F /var/db/slapd.d -n0 -l ${pkgs.writeText "config.ldif" ldifConfig}', + 'slapadd -F /var/db/slapd.d -n1 -l ${pkgs.writeText "contents.ldif" dbContents}', + 'chown -R openldap:openldap /var/db/slapd.d /var/db/openldap', + '${specializations}/manualConfigDir/bin/switch-to-configuration test', ) - '' + testScript; - }) { inherit system pkgs; }; -} + machine.succeed('ldapsearch -LLL -D "cn=root,dc=example" -w notapassword') + machine.succeed('ldapmodify -D cn=root,cn=config -w configpassword -f ${pkgs.writeText "rootpw.ldif" changeRootPw}') + machine.succeed('ldapsearch -LLL -D "cn=root,dc=example" -w foobar') + ''; +}) diff --git a/pkgs/applications/audio/fluidsynth/default.nix b/pkgs/applications/audio/fluidsynth/default.nix index 06129a4814a..45b25ec3d8a 100644 --- a/pkgs/applications/audio/fluidsynth/default.nix +++ b/pkgs/applications/audio/fluidsynth/default.nix @@ -5,13 +5,13 @@ stdenv.mkDerivation rec { pname = "fluidsynth"; - version = "2.2.7"; + version = "2.2.8"; src = fetchFromGitHub { owner = "FluidSynth"; repo = "fluidsynth"; rev = "v${version}"; - sha256 = "sha256-4uo+Ldrp66dmemulKqofX2pz8tE73/5zGtmnY5BHjs8="; + sha256 = "sha256-zJMe2skFeXhrAx9vBcTXWJLfivI/iXyc0JFlNKpBETQ="; }; nativeBuildInputs = [ buildPackages.stdenv.cc pkg-config cmake ]; diff --git a/pkgs/applications/display-managers/lightdm/default.nix b/pkgs/applications/display-managers/lightdm/default.nix index d49dd646fc5..1a54fa2b25d 100644 --- a/pkgs/applications/display-managers/lightdm/default.nix +++ b/pkgs/applications/display-managers/lightdm/default.nix @@ -1,4 +1,5 @@ { lib, stdenv +, buildPackages , fetchFromGitHub , nix-update-script , substituteAll @@ -120,7 +121,7 @@ stdenv.mkDerivation rec { prePatch = '' substituteInPlace autogen.sh \ - --replace "which" "${busybox}/bin/which" + --replace "which" "${buildPackages.busybox}/bin/which" substituteInPlace src/shared-data-manager.c \ --replace /bin/rm ${busybox}/bin/rm diff --git a/pkgs/applications/misc/opencpn/default.nix b/pkgs/applications/misc/opencpn/default.nix index 17553c6121e..5ac167a1003 100644 --- a/pkgs/applications/misc/opencpn/default.nix +++ b/pkgs/applications/misc/opencpn/default.nix @@ -21,7 +21,7 @@ , libsndfile , libthai , libunarr -, libusb +, libusb1 , libvorbis , libxkbcommon , lsb-release @@ -70,7 +70,7 @@ stdenv.mkDerivation rec { libsndfile libthai libunarr - libusb + libusb1 libvorbis libxkbcommon lz4 diff --git a/pkgs/applications/misc/system76-keyboard-configurator/default.nix b/pkgs/applications/misc/system76-keyboard-configurator/default.nix index 2708fb04a61..250d4087e70 100644 --- a/pkgs/applications/misc/system76-keyboard-configurator/default.nix +++ b/pkgs/applications/misc/system76-keyboard-configurator/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, rustPlatform, gtk3, glib, wrapGAppsHook, libusb1, hidapi, udev, pkgconfig }: +{ lib, stdenv, fetchFromGitHub, rustPlatform, gtk3, glib, wrapGAppsHook, libusb1, hidapi, udev, pkg-config }: # system76-keyboard-configurator tries to spawn a daemon as root via pkexec, so # your system needs a PolicyKit authentication agent running for the @@ -16,7 +16,7 @@ rustPlatform.buildRustPackage rec { }; nativeBuildInputs = [ - pkgconfig + pkg-config glib # for glib-compile-resources wrapGAppsHook ]; diff --git a/pkgs/applications/networking/instant-messengers/webex/default.nix b/pkgs/applications/networking/instant-messengers/webex/default.nix index 293f6747d3f..f324dd0db08 100644 --- a/pkgs/applications/networking/instant-messengers/webex/default.nix +++ b/pkgs/applications/networking/instant-messengers/webex/default.nix @@ -2,7 +2,7 @@ , writeScript , stdenv , fetchurl -, alsaLib +, alsa-lib , at-spi2-atk , at-spi2-core , atk @@ -62,7 +62,7 @@ stdenv.mkDerivation rec { }; buildInputs = [ - alsaLib + alsa-lib at-spi2-atk at-spi2-core atk diff --git a/pkgs/applications/version-management/git-and-tools/git/default.nix b/pkgs/applications/version-management/git-and-tools/git/default.nix index 341e1e0b9c9..9e735edea8a 100644 --- a/pkgs/applications/version-management/git-and-tools/git/default.nix +++ b/pkgs/applications/version-management/git-and-tools/git/default.nix @@ -19,6 +19,7 @@ , pkg-config, glib, libsecret , gzip # needed at runtime by gitweb.cgi , withSsh ? false +, doInstallCheck ? !stdenv.isDarwin # extremely slow on darwin }: assert osxkeychainSupport -> stdenv.isDarwin; @@ -31,7 +32,7 @@ let gitwebPerlLibs = with perlPackages; [ CGI HTMLParser CGIFast FCGI FCGIProcManager HTMLTagCloud ]; in -stdenv.mkDerivation { +stdenv.mkDerivation (finalAttrs: { pname = "git" + lib.optionalString svnSupport "-with-svn" + lib.optionalString (!svnSupport && !guiSupport && !sendEmailSupport && !withManual && !pythonSupport && !withpcre2) "-minimal"; @@ -280,7 +281,7 @@ stdenv.mkDerivation { ## InstallCheck doCheck = false; - doInstallCheck = true; + inherit doInstallCheck; installCheckTarget = "test"; @@ -369,6 +370,9 @@ stdenv.mkDerivation { passthru = { shellPath = "/bin/git-shell"; tests = { + withInstallCheck = finalAttrs.finalPackage.overrideAttrs (_: { + doInstallCheck = true; + }); buildbot-integration = nixosTests.buildbot; }; }; @@ -387,4 +391,4 @@ stdenv.mkDerivation { platforms = lib.platforms.all; maintainers = with lib.maintainers; [ primeos wmertens globin ]; }; -} +}) diff --git a/pkgs/build-support/bintools-wrapper/default.nix b/pkgs/build-support/bintools-wrapper/default.nix index 07e79d077db..cdd07d6b2ef 100644 --- a/pkgs/build-support/bintools-wrapper/default.nix +++ b/pkgs/build-support/bintools-wrapper/default.nix @@ -165,11 +165,13 @@ stdenv.mkDerivation { wrap ld-solaris ${./ld-solaris-wrapper.sh} '') - # Create a symlink to as (the assembler). + # Create symlinks for rest of the binaries. + '' - if [ -e $ldPath/${targetPrefix}as ]; then - ln -s $ldPath/${targetPrefix}as $out/bin/${targetPrefix}as - fi + for binary in objdump objcopy size strings as ar nm gprof dwp c++filt addr2line ranlib readelf elfedit; do + if [ -e $ldPath/${targetPrefix}''${binary} ]; then + ln -s $ldPath/${targetPrefix}''${binary} $out/bin/${targetPrefix}''${binary} + fi + done '' + (if !useMacosReexportHack then '' wrap ${targetPrefix}ld ${./ld-wrapper.sh} ''${ld:-$ldPath/${targetPrefix}ld} diff --git a/pkgs/build-support/bintools-wrapper/ld-wrapper.sh b/pkgs/build-support/bintools-wrapper/ld-wrapper.sh index f8bddabbc68..86a74160220 100644 --- a/pkgs/build-support/bintools-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/bintools-wrapper/ld-wrapper.sh @@ -50,6 +50,11 @@ if [[ "${NIX_ENFORCE_PURITY:-}" = 1 && -n "${NIX_STORE:-}" n+=1; skip "$p2" elif [ "$p" = -dynamic-linker ] && badPath "$p2"; then n+=1; skip "$p2" + elif [ "$p" = -syslibroot ] && [ $p2 == // ]; then + # When gcc is built on darwin --with-build-sysroot=/ + # produces '-syslibroot //' linker flag. It's a no-op, + # which does not introduce impurities. + n+=1; skip "$p2" elif [ "${p:0:1}" = / ] && badPath "$p"; then # We cannot skip this; barf. echo "impure path \`$p' used in link" >&2 diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix index d74d0490b40..f8e28c452c3 100644 --- a/pkgs/build-support/cc-wrapper/default.nix +++ b/pkgs/build-support/cc-wrapper/default.nix @@ -249,12 +249,19 @@ stdenv.mkDerivation { wrap ${targetPrefix}gdc $wrapper $ccPath/${targetPrefix}gdc '' - + optionalString cc.langFortran or false '' + + optionalString cc.langFortran or false ('' wrap ${targetPrefix}gfortran $wrapper $ccPath/${targetPrefix}gfortran ln -sv ${targetPrefix}gfortran $out/bin/${targetPrefix}g77 ln -sv ${targetPrefix}gfortran $out/bin/${targetPrefix}f77 export named_fc=${targetPrefix}gfortran '' + # Darwin aarch64 fortran compilations seem to fail otherwise, see: + # https://github.com/NixOS/nixpkgs/issues/140041 + + (if (stdenvNoCC.isDarwin && stdenvNoCC.isAarch64) then '' + export fortran_hardening="pic strictoverflow relro bindnow" + '' else '' + export fortran_hardening="pic strictoverflow relro bindnow stackprotector" + '')) + optionalString cc.langJava or false '' wrap ${targetPrefix}gcj $wrapper $ccPath/${targetPrefix}gcj @@ -374,7 +381,6 @@ stdenv.mkDerivation { + optionalString (libcxx.isLLVM or false) ('' echo "-isystem ${lib.getDev libcxx}/include/c++/v1" >> $out/nix-support/libcxx-cxxflags echo "-stdlib=libc++" >> $out/nix-support/libcxx-ldflags - '' + lib.optionalString stdenv.targetPlatform.isLinux '' echo "-lc++abi" >> $out/nix-support/libcxx-ldflags '') diff --git a/pkgs/build-support/cc-wrapper/fortran-hook.sh b/pkgs/build-support/cc-wrapper/fortran-hook.sh index d72f314c01c..59e493e1836 100644 --- a/pkgs/build-support/cc-wrapper/fortran-hook.sh +++ b/pkgs/build-support/cc-wrapper/fortran-hook.sh @@ -5,7 +5,7 @@ export FC${role_post}=@named_fc@ # If unset, assume the default hardening flags. # These are different for fortran. -: ${NIX_HARDENING_ENABLE="stackprotector pic strictoverflow relro bindnow"} +: ${NIX_HARDENING_ENABLE="@fortran_hardening@"} export NIX_HARDENING_ENABLE unset -v role_post diff --git a/pkgs/build-support/setup-hooks/strip.sh b/pkgs/build-support/setup-hooks/strip.sh index 2d8e66a89fa..80bc064ced7 100644 --- a/pkgs/build-support/setup-hooks/strip.sh +++ b/pkgs/build-support/setup-hooks/strip.sh @@ -7,38 +7,39 @@ _doStrip() { # to $out anyways---if it does, that's a bigger problem that a lack of # stripping will help catch. local -ra flags=(dontStripHost dontStripTarget) - local -ra stripCmds=(STRIP TARGET_STRIP) + local -ra debugDirs=(stripDebugList stripDebugListTarget) + local -ra allDirs=(stripAllList stripAllListTarget) + local -ra stripCmds=(STRIP STRIP_FOR_TARGET) + local -ra ranlibCmds=(RANLIB RANLIB_FOR_TARGET) - # Optimization - if [[ "${STRIP-}" == "${TARGET_STRIP-}" ]]; then - dontStripTarget+=1 - fi + # Strip only host paths by default. Leave targets as is. + stripDebugList=${stripDebugList:-lib lib32 lib64 libexec bin sbin} + stripDebugListTarget=${stripDebugListTarget:-} + stripAllList=${stripAllList:-} + stripAllListTarget=${stripAllListTarget:-} local i for i in ${!stripCmds[@]}; do local -n flag="${flags[$i]}" + local -n debugDirList="${debugDirs[$i]}" + local -n allDirList="${allDirs[$i]}" local -n stripCmd="${stripCmds[$i]}" + local -n ranlibCmd="${ranlibCmds[$i]}" # `dontStrip` disables them all if [[ "${dontStrip-}" || "${flag-}" ]] || ! type -f "${stripCmd-}" 2>/dev/null then continue; fi - stripDebugList=${stripDebugList:-lib lib32 lib64 libexec bin sbin} - if [ -n "$stripDebugList" ]; then - stripDirs "$stripCmd" "$stripDebugList" "${stripDebugFlags:--S}" - fi - - stripAllList=${stripAllList:-} - if [ -n "$stripAllList" ]; then - stripDirs "$stripCmd" "$stripAllList" "${stripAllFlags:--s}" - fi + stripDirs "$stripCmd" "$ranlibCmd" "$debugDirList" "${stripDebugFlags:--S}" + stripDirs "$stripCmd" "$ranlibCmd" "$allDirList" "${stripAllFlags:--s}" done } stripDirs() { local cmd="$1" - local dirs="$2" - local stripFlags="$3" + local ranlibCmd="$2" + local dirs="$3" + local stripFlags="$4" local dirsNew= local d @@ -50,8 +51,13 @@ stripDirs() { dirs=${dirsNew} if [ -n "${dirs}" ]; then - header "stripping (with command $cmd and flags $stripFlags) in$dirs" + echo "stripping (with command $cmd and flags $stripFlags) in$dirs" find $dirs -type f -exec $cmd $stripFlags '{}' \; 2>/dev/null - stopNest + # 'strip' does not normally preserve archive index in .a files. + # This usually causes linking failures against static libs like: + # ld: ...-i686-w64-mingw32-stage-final-gcc-13.0.0-lib/i686-w64-mingw32/lib/libstdc++.dll.a: + # error adding symbols: archive has no index; run ranlib to add one + # Restore the index by running 'ranlib'. + find $dirs -name '*.a' -type f -exec $ranlibCmd '{}' \; 2>/dev/null fi } diff --git a/pkgs/development/compilers/crystal/default.nix b/pkgs/development/compilers/crystal/default.nix index 9cf3bebe7ed..88274ef73c9 100644 --- a/pkgs/development/compilers/crystal/default.nix +++ b/pkgs/development/compilers/crystal/default.nix @@ -2,6 +2,7 @@ , callPackage , fetchFromGitHub , fetchurl +, fetchpatch , lib # Dependencies , boehmgc @@ -97,6 +98,16 @@ let inherit sha256; }; + patches = lib.optionals (lib.versionOlder version "1.2.0") [ + # add support for DWARF5 debuginfo, fixes builds on recent compilers + # the PR is 8 commits from 2019, so just fetch the whole thing + # and hope it doesn't change + (fetchpatch { + url = "https://github.com/crystal-lang/crystal/pull/11399.patch"; + sha256 = "sha256-CjNpkQQ2UREADmlyLUt7zbhjXf0rTjFhNbFYLwJKkc8="; + }) + ]; + outputs = [ "out" "lib" "bin" ]; postPatch = '' diff --git a/pkgs/development/compilers/gcc/10/default.nix b/pkgs/development/compilers/gcc/10/default.nix index 1b9f542894e..1c223fa82f4 100644 --- a/pkgs/development/compilers/gcc/10/default.nix +++ b/pkgs/development/compilers/gcc/10/default.nix @@ -24,9 +24,6 @@ , libcCross ? null , threadsCross ? null # for MinGW , crossStageStatic ? false -, # Strip kills static libs of other archs (hence no cross) - stripped ? stdenv.hostPlatform.system == stdenv.buildPlatform.system - && stdenv.targetPlatform.system == stdenv.hostPlatform.system , gnused ? null , cloog # unused; just for compat with gcc4, as we override the parameter on some places , buildPackages @@ -86,7 +83,7 @@ let majorVersion = "10"; in stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}${if stripped then "" else "-debug"}"; + pname = "${crossNameAddon}${name}"; inherit version; builder = ../builder.sh; @@ -191,7 +188,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit lib; - inherit version targetPlatform hostPlatform gnatboot langAda langGo langJit; + inherit version targetPlatform hostPlatform gnatboot langAda langGo langJit crossStageStatic; }; dontDisableStatic = true; @@ -231,9 +228,11 @@ stdenv.mkDerivation ({ (targetPlatform == hostPlatform && hostPlatform == buildPlatform) (if profiledCompiler then "profiledbootstrap" else "bootstrap"); - dontStrip = !stripped; - - installTargets = optional stripped "install-strip"; + inherit + (import ../common/strip-attributes.nix { inherit stdenv; }) + stripDebugList + stripDebugListTarget + preFixup; # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64"; @@ -274,8 +273,7 @@ stdenv.mkDerivation ({ meta = { homepage = "https://gcc.gnu.org/"; license = lib.licenses.gpl3Plus; # runtime support libraries are typically LGPLv3+ - description = "GNU Compiler Collection, version ${version}" - + (if stripped then "" else " (with debugging info)"); + description = "GNU Compiler Collection, version ${version}"; longDescription = '' The GNU Compiler Collection includes compiler front ends for C, C++, diff --git a/pkgs/development/compilers/gcc/11/default.nix b/pkgs/development/compilers/gcc/11/default.nix index 1dc9ed0a267..ca3a89af180 100644 --- a/pkgs/development/compilers/gcc/11/default.nix +++ b/pkgs/development/compilers/gcc/11/default.nix @@ -24,9 +24,6 @@ , libcCross ? null , threadsCross ? null # for MinGW , crossStageStatic ? false -, # Strip kills static libs of other archs (hence no cross) - stripped ? stdenv.hostPlatform.system == stdenv.buildPlatform.system - && stdenv.targetPlatform.system == stdenv.hostPlatform.system , gnused ? null , cloog # unused; just for compat with gcc4, as we override the parameter on some places , buildPackages @@ -92,7 +89,7 @@ let majorVersion = "11"; in stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}${if stripped then "" else "-debug"}"; + pname = "${crossNameAddon}${name}"; inherit version; builder = ../builder.sh; @@ -199,7 +196,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit lib; - inherit version targetPlatform hostPlatform gnatboot langAda langGo langJit; + inherit version targetPlatform hostPlatform gnatboot langAda langGo langJit crossStageStatic; }; dontDisableStatic = true; @@ -239,9 +236,11 @@ stdenv.mkDerivation ({ (targetPlatform == hostPlatform && hostPlatform == buildPlatform) (if profiledCompiler then "profiledbootstrap" else "bootstrap"); - dontStrip = !stripped; - - installTargets = optional stripped "install-strip"; + inherit + (import ../common/strip-attributes.nix { inherit stdenv; }) + stripDebugList + stripDebugListTarget + preFixup; # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64"; @@ -282,8 +281,7 @@ stdenv.mkDerivation ({ meta = { homepage = "https://gcc.gnu.org/"; license = lib.licenses.gpl3Plus; # runtime support libraries are typically LGPLv3+ - description = "GNU Compiler Collection, version ${version}" - + (if stripped then "" else " (with debugging info)"); + description = "GNU Compiler Collection, version ${version}"; longDescription = '' The GNU Compiler Collection includes compiler front ends for C, C++, diff --git a/pkgs/development/compilers/gcc/12/default.nix b/pkgs/development/compilers/gcc/12/default.nix index 20bc9dcf44b..6fdc31079a8 100644 --- a/pkgs/development/compilers/gcc/12/default.nix +++ b/pkgs/development/compilers/gcc/12/default.nix @@ -24,9 +24,6 @@ , libcCross ? null , threadsCross ? null # for MinGW , crossStageStatic ? false -, # Strip kills static libs of other archs (hence no cross) - stripped ? stdenv.hostPlatform.system == stdenv.buildPlatform.system - && stdenv.targetPlatform.system == stdenv.hostPlatform.system , gnused ? null , cloog # unused; just for compat with gcc4, as we override the parameter on some places , buildPackages @@ -89,7 +86,7 @@ let majorVersion = "12"; in stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}${if stripped then "" else "-debug"}"; + pname = "${crossNameAddon}${name}"; inherit version; builder = ../builder.sh; @@ -194,7 +191,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit lib; - inherit version targetPlatform hostPlatform gnatboot langAda langGo langJit; + inherit version targetPlatform hostPlatform gnatboot langAda langGo langJit crossStageStatic; }; dontDisableStatic = true; @@ -234,9 +231,11 @@ stdenv.mkDerivation ({ (targetPlatform == hostPlatform && hostPlatform == buildPlatform) (if profiledCompiler then "profiledbootstrap" else "bootstrap"); - dontStrip = !stripped; - - installTargets = optional stripped "install-strip"; + inherit + (import ../common/strip-attributes.nix { inherit stdenv; }) + stripDebugList + stripDebugListTarget + preFixup; # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64"; @@ -277,8 +276,7 @@ stdenv.mkDerivation ({ meta = { homepage = "https://gcc.gnu.org/"; license = lib.licenses.gpl3Plus; # runtime support libraries are typically LGPLv3+ - description = "GNU Compiler Collection, version ${version}" - + (if stripped then "" else " (with debugging info)"); + description = "GNU Compiler Collection, version ${version}"; longDescription = '' The GNU Compiler Collection includes compiler front ends for C, C++, diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 8cd0d3c9ce8..bc93d6e1358 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -28,9 +28,6 @@ , libcCross ? null , threadsCross ? null # for MinGW , crossStageStatic ? false -, # Strip kills static libs of other archs (hence no cross) - stripped ? stdenv.hostPlatform == stdenv.buildPlatform - && stdenv.targetPlatform == stdenv.hostPlatform , gnused ? null , buildPackages }: @@ -124,7 +121,7 @@ in assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == []; stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}${if stripped then "" else "-debug"}"; + pname = "${crossNameAddon}${name}"; inherit version; builder = ../builder.sh; @@ -198,7 +195,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit lib; - inherit version targetPlatform hostPlatform langJava langGo; + inherit version targetPlatform hostPlatform langJava langGo crossStageStatic; }; dontDisableStatic = true; @@ -238,12 +235,14 @@ stdenv.mkDerivation ({ (targetPlatform == hostPlatform && hostPlatform == buildPlatform) (if profiledCompiler then "profiledbootstrap" else "bootstrap"); - dontStrip = !stripped; + inherit + (import ../common/strip-attributes.nix { inherit stdenv; }) + stripDebugList + stripDebugListTarget + preFixup; doCheck = false; # requires a lot of tools, causes a dependency cycle for stdenv - installTargets = optional stripped "install-strip"; - # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64"; @@ -297,8 +296,7 @@ stdenv.mkDerivation ({ meta = { homepage = "https://gcc.gnu.org/"; license = lib.licenses.gpl3Plus; # runtime support libraries are typically LGPLv3+ - description = "GNU Compiler Collection, version ${version}" - + (if stripped then "" else " (with debugging info)"); + description = "GNU Compiler Collection, version ${version}"; longDescription = '' The GNU Compiler Collection includes compiler front ends for C, C++, diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index 571d0b02312..cc675de2254 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -28,9 +28,6 @@ , libcCross ? null , threadsCross ? null # for MinGW , crossStageStatic ? false -, # Strip kills static libs of other archs (hence no cross) - stripped ? stdenv.hostPlatform == stdenv.buildPlatform - && stdenv.targetPlatform == stdenv.hostPlatform , gnused ? null , buildPackages }: @@ -140,7 +137,7 @@ in assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == []; stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}${if stripped then "" else "-debug"}"; + pname = "${crossNameAddon}${name}"; inherit version; builder = ../builder.sh; @@ -218,7 +215,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit lib; - inherit version targetPlatform hostPlatform langJava langGo; + inherit version targetPlatform hostPlatform langJava langGo crossStageStatic; }; dontDisableStatic = true; @@ -258,12 +255,14 @@ stdenv.mkDerivation ({ (targetPlatform == hostPlatform && hostPlatform == buildPlatform) (if profiledCompiler then "profiledbootstrap" else "bootstrap"); - dontStrip = !stripped; + inherit + (import ../common/strip-attributes.nix { inherit stdenv; }) + stripDebugList + stripDebugListTarget + preFixup; doCheck = false; # requires a lot of tools, causes a dependency cycle for stdenv - installTargets = optional stripped "install-strip"; - # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64"; @@ -316,8 +315,7 @@ stdenv.mkDerivation ({ meta = { homepage = "https://gcc.gnu.org/"; license = lib.licenses.gpl3Plus; # runtime support libraries are typically LGPLv3+ - description = "GNU Compiler Collection, version ${version}" - + (if stripped then "" else " (with debugging info)"); + description = "GNU Compiler Collection, version ${version}"; longDescription = '' The GNU Compiler Collection includes compiler front ends for C, C++, diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix index 62b46df1ab0..d108dc11f18 100644 --- a/pkgs/development/compilers/gcc/6/default.nix +++ b/pkgs/development/compilers/gcc/6/default.nix @@ -31,9 +31,6 @@ , libcCross ? null , threadsCross ? null # for MinGW , crossStageStatic ? false -, # Strip kills static libs of other archs (hence no cross) - stripped ? stdenv.hostPlatform.system == stdenv.buildPlatform.system - && stdenv.targetPlatform.system == stdenv.hostPlatform.system , gnused ? null , cloog # unused; just for compat with gcc4, as we override the parameter on some places , buildPackages @@ -121,7 +118,7 @@ in assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == []; stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}${if stripped then "" else "-debug"}"; + pname = "${crossNameAddon}${name}"; inherit version; builder = ../builder.sh; @@ -230,7 +227,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit lib; - inherit version targetPlatform hostPlatform gnatboot langJava langAda langGo; + inherit version targetPlatform hostPlatform gnatboot langJava langAda langGo crossStageStatic; }; dontDisableStatic = true; @@ -270,12 +267,14 @@ stdenv.mkDerivation ({ (targetPlatform == hostPlatform && hostPlatform == buildPlatform) (if profiledCompiler then "profiledbootstrap" else "bootstrap"); - dontStrip = !stripped; + inherit + (import ../common/strip-attributes.nix { inherit stdenv; }) + stripDebugList + stripDebugListTarget + preFixup; doCheck = false; # requires a lot of tools, causes a dependency cycle for stdenv - installTargets = optional stripped "install-strip"; - # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64"; @@ -328,8 +327,7 @@ stdenv.mkDerivation ({ meta = { homepage = "https://gcc.gnu.org/"; license = lib.licenses.gpl3Plus; # runtime support libraries are typically LGPLv3+ - description = "GNU Compiler Collection, version ${version}" - + (if stripped then "" else " (with debugging info)"); + description = "GNU Compiler Collection, version ${version}"; longDescription = '' The GNU Compiler Collection includes compiler front ends for C, C++, diff --git a/pkgs/development/compilers/gcc/7/default.nix b/pkgs/development/compilers/gcc/7/default.nix index 1abf14c8a8c..e4e1f2038de 100644 --- a/pkgs/development/compilers/gcc/7/default.nix +++ b/pkgs/development/compilers/gcc/7/default.nix @@ -21,9 +21,6 @@ , libcCross ? null , threadsCross ? null # for MinGW , crossStageStatic ? false -, # Strip kills static libs of other archs (hence no cross) - stripped ? stdenv.hostPlatform.system == stdenv.buildPlatform.system - && stdenv.targetPlatform.system == stdenv.hostPlatform.system , gnused ? null , cloog # unused; just for compat with gcc4, as we override the parameter on some places , buildPackages @@ -94,7 +91,7 @@ let majorVersion = "7"; in stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}${if stripped then "" else "-debug"}"; + pname = "${crossNameAddon}${name}"; inherit version; builder = ../builder.sh; @@ -197,7 +194,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit lib; - inherit version targetPlatform hostPlatform langGo; + inherit version targetPlatform hostPlatform langGo crossStageStatic; }; dontDisableStatic = true; @@ -237,12 +234,14 @@ stdenv.mkDerivation ({ (targetPlatform == hostPlatform && hostPlatform == buildPlatform) (if profiledCompiler then "profiledbootstrap" else "bootstrap"); - dontStrip = !stripped; + inherit + (import ../common/strip-attributes.nix { inherit stdenv; }) + stripDebugList + stripDebugListTarget + preFixup; doCheck = false; # requires a lot of tools, causes a dependency cycle for stdenv - installTargets = optional stripped "install-strip"; - # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64"; @@ -282,8 +281,7 @@ stdenv.mkDerivation ({ meta = { homepage = "https://gcc.gnu.org/"; license = lib.licenses.gpl3Plus; # runtime support libraries are typically LGPLv3+ - description = "GNU Compiler Collection, version ${version}" - + (if stripped then "" else " (with debugging info)"); + description = "GNU Compiler Collection, version ${version}"; longDescription = '' The GNU Compiler Collection includes compiler front ends for C, C++, diff --git a/pkgs/development/compilers/gcc/8/default.nix b/pkgs/development/compilers/gcc/8/default.nix index 2dd265b648c..7e94ec61c6b 100644 --- a/pkgs/development/compilers/gcc/8/default.nix +++ b/pkgs/development/compilers/gcc/8/default.nix @@ -21,9 +21,6 @@ , libcCross ? null , threadsCross ? null # for MinGW , crossStageStatic ? false -, # Strip kills static libs of other archs (hence no cross) - stripped ? stdenv.hostPlatform.system == stdenv.buildPlatform.system - && stdenv.targetPlatform.system == stdenv.hostPlatform.system , gnused ? null , cloog # unused; just for compat with gcc4, as we override the parameter on some places , buildPackages @@ -78,7 +75,7 @@ let majorVersion = "8"; in stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}${if stripped then "" else "-debug"}"; + pname = "${crossNameAddon}${name}"; inherit version; builder = ../builder.sh; @@ -180,7 +177,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit lib; - inherit version targetPlatform hostPlatform langGo; + inherit version targetPlatform hostPlatform langGo crossStageStatic; }; dontDisableStatic = true; @@ -218,9 +215,11 @@ stdenv.mkDerivation ({ (targetPlatform == hostPlatform && hostPlatform == buildPlatform) (if profiledCompiler then "profiledbootstrap" else "bootstrap"); - dontStrip = !stripped; - - installTargets = optional stripped "install-strip"; + inherit + (import ../common/strip-attributes.nix { inherit stdenv; }) + stripDebugList + stripDebugListTarget + preFixup; # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64"; @@ -261,8 +260,7 @@ stdenv.mkDerivation ({ meta = { homepage = "https://gcc.gnu.org/"; license = lib.licenses.gpl3Plus; # runtime support libraries are typically LGPLv3+ - description = "GNU Compiler Collection, version ${version}" - + (if stripped then "" else " (with debugging info)"); + description = "GNU Compiler Collection, version ${version}"; longDescription = '' The GNU Compiler Collection includes compiler front ends for C, C++, diff --git a/pkgs/development/compilers/gcc/9/default.nix b/pkgs/development/compilers/gcc/9/default.nix index 30ae18e4917..707ead542f0 100644 --- a/pkgs/development/compilers/gcc/9/default.nix +++ b/pkgs/development/compilers/gcc/9/default.nix @@ -24,9 +24,6 @@ , libcCross ? null , threadsCross ? null # for MinGW , crossStageStatic ? false -, # Strip kills static libs of other archs (hence no cross) - stripped ? stdenv.hostPlatform.system == stdenv.buildPlatform.system - && stdenv.targetPlatform.system == stdenv.hostPlatform.system , gnused ? null , cloog # unused; just for compat with gcc4, as we override the parameter on some places , buildPackages @@ -89,7 +86,7 @@ let majorVersion = "9"; in stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}${if stripped then "" else "-debug"}"; + pname = "${crossNameAddon}${name}"; inherit version; builder = ../builder.sh; @@ -193,7 +190,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit lib; - inherit version targetPlatform hostPlatform gnatboot langAda langGo langJit; + inherit version targetPlatform hostPlatform gnatboot langAda langGo langJit crossStageStatic; }; dontDisableStatic = true; @@ -233,9 +230,11 @@ stdenv.mkDerivation ({ (targetPlatform == hostPlatform && hostPlatform == buildPlatform) (if profiledCompiler then "profiledbootstrap" else "bootstrap"); - dontStrip = !stripped; - - installTargets = optional stripped "install-strip"; + inherit + (import ../common/strip-attributes.nix { inherit stdenv; }) + stripDebugList + stripDebugListTarget + preFixup; # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64"; @@ -276,8 +275,7 @@ stdenv.mkDerivation ({ meta = { homepage = "https://gcc.gnu.org/"; license = lib.licenses.gpl3Plus; # runtime support libraries are typically LGPLv3+ - description = "GNU Compiler Collection, version ${version}" - + (if stripped then "" else " (with debugging info)"); + description = "GNU Compiler Collection, version ${version}"; longDescription = '' The GNU Compiler Collection includes compiler front ends for C, C++, diff --git a/pkgs/development/compilers/gcc/builder.sh b/pkgs/development/compilers/gcc/builder.sh index 9d0514f1759..a9b33d9a3e4 100644 --- a/pkgs/development/compilers/gcc/builder.sh +++ b/pkgs/development/compilers/gcc/builder.sh @@ -147,11 +147,6 @@ if test "$noSysDirs" = "1"; then fi fi -if [ -n "${targetConfig-}" ]; then - # if stripping gcc, include target directory too - stripDebugList="${stripDebugList-lib lib32 lib64 libexec bin sbin} $targetConfig" -fi - eval "$oldOpts" providedPreConfigure="$preConfigure"; @@ -171,15 +166,6 @@ preConfigure() { rm -Rf zlib fi - if test -f "$NIX_CC/nix-support/orig-libc"; then - # Patch the configure script so it finds glibc headers. It's - # important for example in order not to get libssp built, - # because its functionality is in glibc already. - sed -i \ - -e "s,glibc_header_dir=/usr/include,glibc_header_dir=$libc_dev/include", \ - gcc/configure - fi - if test -n "$crossMingw" -a -n "$crossStageStatic"; then mkdir -p ../mingw # --with-build-sysroot expects that: diff --git a/pkgs/development/compilers/gcc/common/configure-flags.nix b/pkgs/development/compilers/gcc/common/configure-flags.nix index bf33e1a1dad..3bcfd4b3e89 100644 --- a/pkgs/development/compilers/gcc/common/configure-flags.nix +++ b/pkgs/development/compilers/gcc/common/configure-flags.nix @@ -111,8 +111,30 @@ let "--with-mpc=${libmpc}" ] ++ lib.optional (libelf != null) "--with-libelf=${libelf}" - ++ lib.optional (!(crossMingw && crossStageStatic)) - "--with-native-system-header-dir=${lib.getDev stdenv.cc.libc}/include" + ++ lib.optionals (!crossStageStatic) [ + (if libcCross == null + then "--with-native-system-header-dir=${lib.getDev stdenv.cc.libc}/include" + else "--with-native-system-header-dir=${lib.getDev libcCross}${libcCross.incdir or "/include"}") + # gcc builds for cross-compilers (build != host) or cross-built + # gcc (host != target) always apply the offset prefix to disentangle + # target headers from build or host headers: + # ${with_build_sysroot}${native_system_header_dir} + # or ${test_exec_prefix}/${target_noncanonical}/sys-include + # or ${with_sysroot}${native_system_header_dir} + # While native build (build == host == target) uses passed headers + # path as is: + # ${native_system_header_dir} + # + # Nixpkgs uses flat directory structure for both native and cross + # cases. As a result libc headers don't get found for cross case + # and many modern features get disabled (libssp is used instead of + # target-specific implementations and similar). More details at: + # https://github.com/NixOS/nixpkgs/pull/181802#issuecomment-1186822355 + # + # We pick "/" path to effectively avoid sysroot offset and make it work + # as a native case. + "--with-build-sysroot=/" + ] # Basic configuration ++ [ diff --git a/pkgs/development/compilers/gcc/common/pre-configure.nix b/pkgs/development/compilers/gcc/common/pre-configure.nix index 310e7f8b574..180d5f16e91 100644 --- a/pkgs/development/compilers/gcc/common/pre-configure.nix +++ b/pkgs/development/compilers/gcc/common/pre-configure.nix @@ -3,7 +3,9 @@ , langAda ? false , langJava ? false , langJit ? false -, langGo }: +, langGo +, crossStageStatic +}: assert langJava -> lib.versionOlder version "7"; assert langAda -> gnatboot != null; let @@ -67,3 +69,12 @@ in lib.optionalString (hostPlatform.isSunOS && hostPlatform.is64bit) '' + lib.optionalString (targetPlatform.config == hostPlatform.config && targetPlatform != hostPlatform) '' substituteInPlace configure --replace is_cross_compiler=no is_cross_compiler=yes '' + +# Normally (for host != target case) --without-headers automatically +# enables 'inhibit_libc=true' in gcc's gcc/configure.ac. But case of +# gcc->clang "cross"-compilation manages to evade it: there +# hostPlatform != targetPlatform, hostPlatform.config == targetPlatform.config. +# We explicitly inhibit libc headers use in this case as well. ++ lib.optionalString (targetPlatform != hostPlatform && crossStageStatic) '' + export inhibit_libc=true +'' diff --git a/pkgs/development/compilers/gcc/common/strip-attributes.nix b/pkgs/development/compilers/gcc/common/strip-attributes.nix new file mode 100644 index 00000000000..997c068cba6 --- /dev/null +++ b/pkgs/development/compilers/gcc/common/strip-attributes.nix @@ -0,0 +1,53 @@ +{ stdenv }: + +{ + # Note [Cross-compiler stripping] + # gcc requires delicate stripping as it installs ELF files for both + # HOST and TARGET platforms. It requires according strip tool otherwise + # strip could remove sections it's not aware of. + # Example ARM breakage by x86_64 strip: https://bugs.gentoo.org/697428 + # + # Let's recap the file layout for directories with object files for a + # cross-compiler (host != target): + # `- bin: HOST + # lib/*.{a,o}: HOST + # `- gcc/<TARGET>/<VERSION>/*.{a,o}: TARGET + # `- plugin/: HOST + # `- lib{,32,64,x32}: symlink to lib or identical layout + # `- libexec/: HOST + # `- <TARGET>/: TARGET + # + # (host == target) has identical directory layout. + + # The rest of stripDebugList{Host,Target} will be populated in + # postInstall. + stripDebugList = [ "bin" "libexec" ]; + stripDebugListTarget = [ stdenv.targetPlatform.config ]; + + preFixup = '' + # Populate most delicated lib/ part of stripDebugList{,Target} + updateDebugListPaths() { + local oldOpts + oldOpts="$(shopt -p nullglob)" || true + shopt -s nullglob + + pushd $out + + local -ar hostFiles=( + lib{,32,64}/*.{a.o} + lib{,32,64}/gcc/${stdenv.targetPlatform.config}/*/plugin + ) + local -ar targetFiles=( + lib{,32,64}/gcc/${stdenv.targetPlatform.config}/*/*.{a.o} + ) + + stripDebugList="$stripDebugList ''${hostFiles[*]}" + stripDebugListTarget="$stripDebugListTarget ''${targetFiles[*]}" + + popd + + eval "$oldOpts" + } + updateDebugListPaths + ''; +} diff --git a/pkgs/development/compilers/go/1.18.nix b/pkgs/development/compilers/go/1.18.nix index 05c40b68937..f21ee87ad4c 100644 --- a/pkgs/development/compilers/go/1.18.nix +++ b/pkgs/development/compilers/go/1.18.nix @@ -1,5 +1,6 @@ { lib , stdenv +, fetchpatch , fetchurl , tzdata , iana-etc @@ -172,7 +173,11 @@ stdenv.mkDerivation rec { touch $TMPDIR/group $TMPDIR/hosts $TMPDIR/passwd ''; - patches = [ + patches = let + fetchBase64Patch = args: (fetchpatch args).overrideAttrs (o: { + postFetch = "mv $out p; base64 -d p > $out; " + o.postFetch; + }); + in [ ./remove-tools-1.11.patch ./ssl-cert-file-1.16.patch ./remove-test-pie-1.15.patch @@ -182,6 +187,12 @@ stdenv.mkDerivation rec { ./skip-nohup-tests.patch ./skip-cgo-tests-1.15.patch ./go_no_vendor_checks-1.16.patch + + # https://go-review.googlesource.com/c/go/+/417615/ + (fetchBase64Patch { + url = "https://go-review.googlesource.com/changes/go~417615/revisions/3/patch"; + sha256 = "sha256-Gu5eZUwGGch7et75A/BNynbs4VlQUBClVUxjxPkdjOs="; + }) ]; postPatch = '' diff --git a/pkgs/development/compilers/vala/default.nix b/pkgs/development/compilers/vala/default.nix index 0a468023616..43ff938598d 100644 --- a/pkgs/development/compilers/vala/default.nix +++ b/pkgs/development/compilers/vala/default.nix @@ -103,8 +103,8 @@ in rec { }; vala_0_56 = generic { - version = "0.56.1"; - sha256 = "xRi4Hf3agtHN9Yaz+bIyMWLLlr08taLANlDOoCXZH7k="; + version = "0.56.2"; + sha256 = "Zslhm7F4Wf0aw6ugpXlwYT44/Soe4wVBF0JgyfuQEkw="; }; vala = vala_0_56; diff --git a/pkgs/development/go-modules/generic/default.nix b/pkgs/development/go-modules/generic/default.nix index 0ca16f80b41..8b5185979e4 100644 --- a/pkgs/development/go-modules/generic/default.nix +++ b/pkgs/development/go-modules/generic/default.nix @@ -272,6 +272,8 @@ let doCheck = args.doCheck or true; checkPhase = args.checkPhase or '' runHook preCheck + # We do not set trimpath for tests, in case they reference test assets + export GOFLAGS=''${GOFLAGS//-trimpath/} for pkg in $(getGoDirs test); do buildGoDir test "$pkg" diff --git a/pkgs/development/go-packages/generic/default.nix b/pkgs/development/go-packages/generic/default.nix index 643c1955d2b..56c8ceeca15 100644 --- a/pkgs/development/go-packages/generic/default.nix +++ b/pkgs/development/go-packages/generic/default.nix @@ -233,6 +233,8 @@ let doCheck = args.doCheck or false; checkPhase = args.checkPhase or '' runHook preCheck + # We do not set trimpath for tests, in case they reference test assets + export GOFLAGS=''${GOFLAGS//-trimpath/} for pkg in $(getGoDirs test); do buildGoDir test "$pkg" diff --git a/pkgs/development/libraries/SDL2/default.nix b/pkgs/development/libraries/SDL2/default.nix index 15289570d47..f73c5746cb7 100644 --- a/pkgs/development/libraries/SDL2/default.nix +++ b/pkgs/development/libraries/SDL2/default.nix @@ -29,7 +29,7 @@ , libxkbcommon , dbusSupport ? stdenv.isLinux && !stdenv.hostPlatform.isAndroid , dbus -, udevSupport ? false +, udevSupport ? stdenv.isLinux && !stdenv.hostPlatform.isAndroid , udev , ibusSupport ? false , ibus diff --git a/pkgs/development/libraries/accountsservice/default.nix b/pkgs/development/libraries/accountsservice/default.nix index efe9640af6f..4bd7a67871f 100644 --- a/pkgs/development/libraries/accountsservice/default.nix +++ b/pkgs/development/libraries/accountsservice/default.nix @@ -10,6 +10,7 @@ , systemd , coreutils , meson +, mesonEmulatorHook , dbus , ninja , python3 @@ -47,7 +48,6 @@ stdenv.mkDerivation rec { ]; nativeBuildInputs = [ - dbus gettext gobject-introspection meson @@ -55,9 +55,14 @@ stdenv.mkDerivation rec { pkg-config python3 vala + ] ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ + # meson.build:88:2: ERROR: Can not run test applications in this cross environment. + mesonEmulatorHook ]; buildInputs = [ + gobject-introspection + dbus glib polkit systemd diff --git a/pkgs/development/libraries/glibc/0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch b/pkgs/development/libraries/glibc/0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch index 45bad2867e9..b2c998aabbe 100644 --- a/pkgs/development/libraries/glibc/0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch +++ b/pkgs/development/libraries/glibc/0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch @@ -1,6 +1,6 @@ -From f81744bae4442345ff6f40d80fdb8adaba8b330f Mon Sep 17 00:00:00 2001 -From: Maximilian Bosch <maximilian@mbosch.me> -Date: Fri, 27 Aug 2021 17:19:27 +0200 +From faeeb0f353f5540da2015a41cb60fe43d199a1ac Mon Sep 17 00:00:00 2001 +From: Bernardo Meurer <bernardo@meurer.org> +Date: Fri, 22 Jul 2022 22:11:07 -0700 Subject: [PATCH] Revert "Remove all usage of @BASH@ or ${BASH} in installed files, and hardcode /bin/bash instead" @@ -8,6 +8,8 @@ We need the ability to override to use `/bin/sh` here to avoid having some bootstrap tools in a final build product. This reverts commit 5188a9d0265cc6f7235a8af1d31ab02e4a24853d. + +Co-authored-by: Maximilian Bosch <maximilian@mbosch.me> --- debug/Makefile | 5 +++-- debug/xtrace.sh | 2 +- @@ -20,10 +22,10 @@ This reverts commit 5188a9d0265cc6f7235a8af1d31ab02e4a24853d. 8 files changed, 15 insertions(+), 10 deletions(-) diff --git a/debug/Makefile b/debug/Makefile -index 6893111cbf..3f66666c6c 100644 +index 96029f32ee..cbbdeda277 100644 --- a/debug/Makefile +++ b/debug/Makefile -@@ -216,7 +216,8 @@ $(objpfx)pcprofiledump: $(objpfx)pcprofiledump.o +@@ -238,7 +238,8 @@ $(objpfx)pcprofiledump: $(objpfx)pcprofiledump.o $(objpfx)xtrace: xtrace.sh rm -f $@.new @@ -35,20 +37,20 @@ index 6893111cbf..3f66666c6c 100644 -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|' $^ > $@.new \ && rm -f $@ && mv $@.new $@ && chmod +x $@ diff --git a/debug/xtrace.sh b/debug/xtrace.sh -index 9697fbe0b4..279fe59ac6 100755 +index 8c56e01449..c760391a33 100755 --- a/debug/xtrace.sh +++ b/debug/xtrace.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#! @BASH@ - # Copyright (C) 1999-2021 Free Software Foundation, Inc. + # Copyright (C) 1999-2022 Free Software Foundation, Inc. # This file is part of the GNU C Library. - # Contributed by Ulrich Drepper <drepper@gnu.org>, 1999. + diff --git a/elf/Makefile b/elf/Makefile -index d05f410592..9264409fdd 100644 +index 3536b6af5e..83521d9dbc 100644 --- a/elf/Makefile +++ b/elf/Makefile -@@ -144,7 +144,8 @@ $(objpfx)sotruss-lib.so: $(common-objpfx)libc.so $(objpfx)ld.so \ +@@ -256,7 +256,8 @@ $(objpfx)sotruss-lib.so: $(common-objpfx)libc.so $(objpfx)ld.so \ $(common-objpfx)libc_nonshared.a $(objpfx)sotruss: sotruss.sh $(common-objpfx)config.make @@ -58,7 +60,7 @@ index d05f410592..9264409fdd 100644 -e 's%@TEXTDOMAINDIR@%$(localedir)%g' \ -e 's%@PREFIX@%$(prefix)%g' \ -e 's|@PKGVERSION@|$(PKGVERSION)|g' \ -@@ -659,6 +660,7 @@ ldd-rewrite = -e 's%@RTLD@%$(rtlddir)/$(rtld-installed-name)%g' \ +@@ -1363,6 +1364,7 @@ ldd-rewrite = -e 's%@RTLD@%$(rtlddir)/$(rtld-installed-name)%g' \ -e 's%@VERSION@%$(version)%g' \ -e 's|@PKGVERSION@|$(PKGVERSION)|g' \ -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|g' \ @@ -67,30 +69,30 @@ index d05f410592..9264409fdd 100644 ifeq ($(ldd-rewrite-script),no) diff --git a/elf/ldd.bash.in b/elf/ldd.bash.in -index ba736464ac..57442bc3f2 100644 +index 3253b32ef8..127eb59206 100644 --- a/elf/ldd.bash.in +++ b/elf/ldd.bash.in @@ -1,4 +1,4 @@ -#!/bin/bash +#! @BASH@ - # Copyright (C) 1996-2021 Free Software Foundation, Inc. + # Copyright (C) 1996-2022 Free Software Foundation, Inc. # This file is part of the GNU C Library. diff --git a/elf/sotruss.sh b/elf/sotruss.sh -index 003cf4d825..fd4da80244 100755 +index 22327eac5c..7d15bf4fc8 100755 --- a/elf/sotruss.sh +++ b/elf/sotruss.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#! @BASH@ - # Copyright (C) 2011-2021 Free Software Foundation, Inc. + # Copyright (C) 2011-2022 Free Software Foundation, Inc. # This file is part of the GNU C Library. diff --git a/malloc/Makefile b/malloc/Makefile -index 9b70831d38..90ecadff6c 100644 +index 2329cf718a..5d7de4bee7 100644 --- a/malloc/Makefile +++ b/malloc/Makefile -@@ -271,8 +271,9 @@ $(objpfx)mtrace: mtrace.pl +@@ -307,8 +307,9 @@ $(objpfx)mtrace: mtrace.pl $(objpfx)memusage: memusage.sh rm -f $@.new @@ -103,21 +105,21 @@ index 9b70831d38..90ecadff6c 100644 && rm -f $@ && mv $@.new $@ && chmod +x $@ diff --git a/malloc/memusage.sh b/malloc/memusage.sh -index 0645f09911..c1cd4e23b7 100755 +index f447160b7d..faa4936639 100755 --- a/malloc/memusage.sh +++ b/malloc/memusage.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#! @BASH@ - # Copyright (C) 1999-2021 Free Software Foundation, Inc. + # Copyright (C) 1999-2022 Free Software Foundation, Inc. # This file is part of the GNU C Library. - # Contributed by Ulrich Drepper <drepper@gnu.org>, 1999. + diff --git a/timezone/Makefile b/timezone/Makefile -index c624a189b3..395abfeebd 100644 +index a789c22d26..d65bdf2391 100644 --- a/timezone/Makefile +++ b/timezone/Makefile -@@ -123,7 +123,8 @@ $(testdata)/XT%: testdata/XT% - cp $< $@ +@@ -130,7 +130,8 @@ $(testdata)/XT5: testdata/gen-XT5.sh + mv $@.tmp $@ $(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make - sed -e 's|TZDIR=[^}]*|TZDIR=$(zonedir)|' \ @@ -127,5 +129,5 @@ index c624a189b3..395abfeebd 100644 -e '/PKGVERSION=/s|=.*|="$(PKGVERSION)"|' \ -e '/REPORT_BUGS_TO=/s|=.*|="$(REPORT_BUGS_TO)"|' \ -- -2.31.1 +2.37.0 diff --git a/pkgs/development/libraries/glibc/2.34-master.patch.gz b/pkgs/development/libraries/glibc/2.34-master.patch.gz deleted file mode 100644 index b7aa7518c37..00000000000 --- a/pkgs/development/libraries/glibc/2.34-master.patch.gz +++ /dev/null Binary files differdiff --git a/pkgs/development/libraries/glibc/2.35-master.patch.gz b/pkgs/development/libraries/glibc/2.35-master.patch.gz new file mode 100644 index 00000000000..24939e1c089 --- /dev/null +++ b/pkgs/development/libraries/glibc/2.35-master.patch.gz Binary files differdiff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix index 2fc89a968f8..6ed0a4d4da0 100644 --- a/pkgs/development/libraries/glibc/common.nix +++ b/pkgs/development/libraries/glibc/common.nix @@ -43,9 +43,9 @@ } @ args: let - version = "2.34"; - patchSuffix = "-210"; - sha256 = "sha256-RNJqH+ILiFOkj0cOrQHkJ56GmsFJsZXdpORKGV2YGrI="; + version = "2.35"; + patchSuffix = "-163"; + sha256 = "sha256-USNzL2tnzNMZMF79OZlx1YWSEivMKmUYob0lEN0M9S4="; in assert withLinuxHeaders -> linuxHeaders != null; @@ -62,14 +62,14 @@ stdenv.mkDerivation ({ patches = [ /* No tarballs for stable upstream branch, only https://sourceware.org/git/glibc.git and using git would complicate bootstrapping. - $ git fetch --all -p && git checkout origin/release/2.34/master && git describe - glibc-2.34-210-ge123f08ad5 - $ git show --minimal --reverse glibc-2.34.. | gzip -9n --rsyncable - > 2.34-master.patch.gz + $ git fetch --all -p && git checkout origin/release/2.35/master && git describe + glibc-2.35-210-ge123f08ad5 + $ git show --minimal --reverse glibc-2.35.. | gzip -9n --rsyncable - > 2.35-master.patch.gz To compare the archive contents zdiff can be used. - $ zdiff -u 2.34-master.patch.gz ../nixpkgs/pkgs/development/libraries/glibc/2.34-master.patch.gz + $ zdiff -u 2.35-master.patch.gz ../nixpkgs/pkgs/development/libraries/glibc/2.35-master.patch.gz */ - ./2.34-master.patch.gz + ./2.35-master.patch.gz /* Allow NixOS and Nix to handle the locale-archive. */ ./nix-locale-archive.patch @@ -115,33 +115,12 @@ stdenv.mkDerivation ({ sha256 = "091bk3kyrx1gc380gryrxjzgcmh1ajcj8s2rjhp2d2yzd5mpd5ps"; }) - /* Provide utf-8 locales by default, so we can use it in stdenv without depending on our large locale-archive. */ - (fetchurl { - url = "https://salsa.debian.org/glibc-team/glibc/raw/49767c9f7de4828220b691b29de0baf60d8a54ec/debian/patches/localedata/locale-C.diff"; - sha256 = "0irj60hs2i91ilwg5w7sqrxb695c93xg0ik7yhhq9irprd7fidn4"; - }) - ./fix-x64-abi.patch /* https://github.com/NixOS/nixpkgs/pull/137601 */ ./nix-nss-open-files.patch ./0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch - - /* Fix segfault in getpwuid when stat fails - https://sourceware.org/bugzilla/show_bug.cgi?id=28752 */ - (fetchurl { - url = "https://patchwork.sourceware.org/project/glibc/patch/20220314175316.3239120-2-sam@gentoo.org/raw/"; - sha256 = "sq0BoPqXHQ69Vq4zJobCspe4XRfnAiuac/wqzVQJESc="; - }) - - /* Patch pending upstream inclusion to fix string.h syntax for older gcc. - Needed to unbreak gnat bootstrap against old gcc in nixpkgs: - https://patchwork.sourceware.org/project/glibc/patch/20220520150609.346566-1-slyfox@gentoo.org/ */ - (fetchurl { - url = "https://patchwork.sourceware.org/project/glibc/patch/20220520150609.346566-1-slyfox@gentoo.org/raw/"; - sha256 = "x3/eO1EHJXBIrH2WXHRRD1swtWv+btFVjvMt5tj/wDA="; - }) ] ++ lib.optional stdenv.hostPlatform.isMusl ./fix-rpc-types-musl-conflicts.patch ++ lib.optional stdenv.buildPlatform.isDarwin ./darwin-cross-build.patch; @@ -178,7 +157,7 @@ stdenv.mkDerivation ({ [ "-C" "--enable-add-ons" "--sysconfdir=/etc" - "--enable-stackguard-randomization" + "--enable-stack-protector=strong" "--enable-bind-now" (lib.withFeatureAs withLinuxHeaders "headers" "${linuxHeaders}/include") (lib.enableFeature profilingLibraries "profile") @@ -188,6 +167,9 @@ stdenv.mkDerivation ({ # and on aarch64 with binutils 2.30 or later. # https://sourceware.org/glibc/wiki/PortStatus "--enable-static-pie" + ] ++ lib.optionals stdenv.hostPlatform.isx86 [ + # Enable Intel Control-flow Enforcement Technology (CET) support + "--enable-cet" ] ++ lib.optionals withLinuxHeaders [ "--enable-kernel=3.2.0" # can't get below with glibc >= 2.26 ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ diff --git a/pkgs/development/libraries/gobject-introspection/default.nix b/pkgs/development/libraries/gobject-introspection/default.nix index 896db9c4672..bb07d8c792c 100644 --- a/pkgs/development/libraries/gobject-introspection/default.nix +++ b/pkgs/development/libraries/gobject-introspection/default.nix @@ -90,7 +90,13 @@ stdenv.mkDerivation (finalAttrs: { "-Dcairo=disabled" "-Dgtk_doc=${lib.boolToString (stdenv.hostPlatform == stdenv.buildPlatform)}" ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ - "-Dgi_cross_ldd_wrapper=${buildPackages.prelink}/bin/prelink-rtld" + "-Dgi_cross_ldd_wrapper=${substituteAll { + name = "g-ir-scanner-lddwrapper"; + isExecutable = true; + src = ./wrappers/g-ir-scanner-lddwrapper.sh; + inherit (buildPackages) bash; + buildobjdump = "${buildPackages.stdenv.cc.bintools}/bin/objdump"; + }}" "-Dgi_cross_use_prebuilt_gi=true" "-Dgi_cross_binary_wrapper=${stdenv.hostPlatform.emulator buildPackages}" ]; diff --git a/pkgs/development/libraries/gobject-introspection/giscanner-ignore-error-return-codes-from-ldd-wrapper.patch b/pkgs/development/libraries/gobject-introspection/giscanner-ignore-error-return-codes-from-ldd-wrapper.patch deleted file mode 100644 index bf1c1f1b713..00000000000 --- a/pkgs/development/libraries/gobject-introspection/giscanner-ignore-error-return-codes-from-ldd-wrapper.patch +++ /dev/null @@ -1,32 +0,0 @@ -From e0fc4a2a5161a36483ddc518be9bb14390f11b19 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Wed, 5 Sep 2018 16:46:52 +0200 -Subject: [PATCH] giscanner: ignore error return codes from ldd-wrapper - -prelink-rtld, which we use instead of ldd returns 127 when it can't find a library. -It is not an error per se, but it breaks subprocess.check_output(). - -Upstream-Status: Inappropriate [oe-core specific] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> -Signed-off-by: Adam Duskett <aduskett@gmail.com> ---- - giscanner/shlibs.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/giscanner/shlibs.py b/giscanner/shlibs.py -index 9f8ab5df..7a1a72fe 100644 ---- a/giscanner/shlibs.py -+++ b/giscanner/shlibs.py -@@ -103,7 +103,7 @@ def _resolve_non_libtool(options, binary, libraries): - args.extend(['otool', '-L', binary.args[0]]) - else: - args.extend(['ldd', binary.args[0]]) -- output = subprocess.check_output(args) -+ output = subprocess.run(args, check=False, stdout=subprocess.PIPE).stdout - if isinstance(output, bytes): - output = output.decode("utf-8", "replace") - --- -2.25.1 - - diff --git a/pkgs/development/libraries/gobject-introspection/wrapper.nix b/pkgs/development/libraries/gobject-introspection/wrapper.nix index 9e8f20ce146..4b3fa1a1981 100644 --- a/pkgs/development/libraries/gobject-introspection/wrapper.nix +++ b/pkgs/development/libraries/gobject-introspection/wrapper.nix @@ -18,24 +18,23 @@ in (gobject-introspection-unwrapped.override args).overrideAttrs (previousAttrs: { pname = "gobject-introspection-wrapped"; - # failure in e.g. pkgsCross.aarch64-multiplatform.polkit - # subprocess.CalledProcessError: Command '['/nix/store/...-prelink-unstable-2019-06-24/bin/prelink-rtld', '/build/source/build/tmp-introspectzp2ldkyk/PolkitAgent-1.0']' returned non-zero exit status 127. - patches = previousAttrs.patches ++ [ ./giscanner-ignore-error-return-codes-from-ldd-wrapper.patch ]; postFixup = (previousAttrs.postFixup or "") + '' mv $dev/bin/g-ir-compiler $dev/bin/.g-ir-compiler-wrapped mv $dev/bin/g-ir-scanner $dev/bin/.g-ir-scanner-wrapped ( - export bash="${buildPackages.bash}/bin/bash" + export bash="${buildPackages.bash}" export emulator=${lib.escapeShellArg (stdenv.targetPlatform.emulator buildPackages)} - export buildprelink="${buildPackages.prelink}/bin/prelink-rtld" + export buildobjdump="${buildPackages.stdenv.cc.bintools}/bin/objdump" export targetgir="${lib.getDev (targetPackages.gobject-introspection-unwrapped.override argsForTarget)}" substituteAll "${./wrappers/g-ir-compiler.sh}" "$dev/bin/g-ir-compiler" substituteAll "${./wrappers/g-ir-scanner.sh}" "$dev/bin/g-ir-scanner" + substituteAll "${./wrappers/g-ir-scanner-lddwrapper.sh}" "$dev/bin/g-ir-scanner-lddwrapper" chmod +x "$dev/bin/g-ir-compiler" chmod +x "$dev/bin/g-ir-scanner" + chmod +x "$dev/bin/g-ir-scanner-lddwrapper" ) '' # when cross-compiling and using the wrapper then when a package looks up the g_ir_X diff --git a/pkgs/development/libraries/gobject-introspection/wrappers/g-ir-compiler.sh b/pkgs/development/libraries/gobject-introspection/wrappers/g-ir-compiler.sh index fde3dcfe0c0..69642831c8a 100644 --- a/pkgs/development/libraries/gobject-introspection/wrappers/g-ir-compiler.sh +++ b/pkgs/development/libraries/gobject-introspection/wrappers/g-ir-compiler.sh @@ -1,4 +1,4 @@ -#! @bash@ +#! @bash@/bin/bash # shellcheck shell=bash exec @emulator@ @targetgir@/bin/g-ir-compiler "$@" diff --git a/pkgs/development/libraries/gobject-introspection/wrappers/g-ir-scanner-lddwrapper.sh b/pkgs/development/libraries/gobject-introspection/wrappers/g-ir-scanner-lddwrapper.sh new file mode 100644 index 00000000000..1bf9c3659dc --- /dev/null +++ b/pkgs/development/libraries/gobject-introspection/wrappers/g-ir-scanner-lddwrapper.sh @@ -0,0 +1,4 @@ +#! @bash@/bin/bash +# shellcheck shell=bash + +exec @buildobjdump@ -p "$@" diff --git a/pkgs/development/libraries/gobject-introspection/wrappers/g-ir-scanner.sh b/pkgs/development/libraries/gobject-introspection/wrappers/g-ir-scanner.sh index 0825f10e166..6a222191c7b 100644 --- a/pkgs/development/libraries/gobject-introspection/wrappers/g-ir-scanner.sh +++ b/pkgs/development/libraries/gobject-introspection/wrappers/g-ir-scanner.sh @@ -1,7 +1,7 @@ -#! @bash@ +#! @bash@/bin/bash # shellcheck shell=bash exec @dev@/bin/.g-ir-scanner-wrapped \ --use-binary-wrapper=@emulator@ \ - --use-ldd-wrapper=@buildprelink@ \ + --use-ldd-wrapper=@dev@/bin/g-ir-scanner-lddwrapper \ "$@" diff --git a/pkgs/development/libraries/harfbuzz/default.nix b/pkgs/development/libraries/harfbuzz/default.nix index 20323796e9d..8c67ef0a156 100644 --- a/pkgs/development/libraries/harfbuzz/default.nix +++ b/pkgs/development/libraries/harfbuzz/default.nix @@ -30,7 +30,7 @@ }: let - version = "3.3.2"; + version = "5.0.1"; inherit (lib) optional optionals optionalString; mesonFeatureFlag = opt: b: "-D${opt}=${if b then "enabled" else "disabled"}"; @@ -44,7 +44,7 @@ stdenv.mkDerivation { owner = "harfbuzz"; repo = "harfbuzz"; rev = version; - sha256 = "sha256-UbYqV7Ch9ugTIwSsCpjnS8H7tcv4P3OVpFDFDZtQCk0="; + sha256 = "sha256-01hpSTesPpUO2T9v1sq3VvCSFEOMyaxbHhX0vS1ms/k="; }; postPatch = '' diff --git a/pkgs/development/libraries/libqrtr-glib/default.nix b/pkgs/development/libraries/libqrtr-glib/default.nix index e7445468ecc..6e01cda9162 100644 --- a/pkgs/development/libraries/libqrtr-glib/default.nix +++ b/pkgs/development/libraries/libqrtr-glib/default.nix @@ -2,6 +2,7 @@ , stdenv , fetchFromGitLab , meson +, mesonEmulatorHook , ninja , pkg-config , gobject-introspection @@ -39,16 +40,15 @@ stdenv.mkDerivation rec { gtk-doc docbook-xsl-nons docbook_xml_dtd_43 + ] ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ + mesonEmulatorHook ]; buildInputs = [ + gobject-introspection glib ]; - mesonFlags = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ - "-Dgtk_doc=false" - ]; - meta = with lib; { homepage = "https://gitlab.freedesktop.org/mobile-broadband/libqrtr-glib"; description = "Qualcomm IPC Router protocol helper library"; diff --git a/pkgs/development/libraries/libva/default.nix b/pkgs/development/libraries/libva/default.nix index 037318353ce..ad4083bf6fe 100644 --- a/pkgs/development/libraries/libva/default.nix +++ b/pkgs/development/libraries/libva/default.nix @@ -7,13 +7,13 @@ stdenv.mkDerivation rec { pname = "libva" + lib.optionalString minimal "-minimal"; - version = "2.14.0"; + version = "2.15.0"; src = fetchFromGitHub { owner = "intel"; repo = "libva"; rev = version; - sha256 = "0q395lg6gp05mwf04zbrwgj6q9073lahh3wrcfa2i8ll60cfq9fg"; + sha256 = "sha256-NJA2FTPrhLj9+vmkBy+GcTiH57gBEQnYhZzYk3sEOBo="; }; outputs = [ "dev" "out" ]; diff --git a/pkgs/development/libraries/libwacom/default.nix b/pkgs/development/libraries/libwacom/default.nix index a46ccdf7850..24092d32869 100644 --- a/pkgs/development/libraries/libwacom/default.nix +++ b/pkgs/development/libraries/libwacom/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { pname = "libwacom"; - version = "2.2.0"; + version = "2.4.0"; outputs = [ "out" "dev" ]; @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { owner = "linuxwacom"; repo = "libwacom"; rev = "libwacom-${version}"; - sha256 = "sha256-SqKXxmyP31kb6ikMQRqPaKNIpeLcMLLEGInCGIx5jWM="; + sha256 = "sha256-9uhnO+MqB7tAnSXjBcJWCzHGiz9izun4nVjFb17G8Gg="; }; nativeBuildInputs = [ diff --git a/pkgs/development/libraries/libxml2/default.nix b/pkgs/development/libraries/libxml2/default.nix index f0b4d0baf4f..c4571feb81e 100644 --- a/pkgs/development/libraries/libxml2/default.nix +++ b/pkgs/development/libraries/libxml2/default.nix @@ -94,8 +94,10 @@ stdenv.mkDerivation rec { doCheck = (stdenv.hostPlatform == stdenv.buildPlatform) && - !stdenv.isDarwin && stdenv.hostPlatform.libc != "musl"; + preCheck = lib.optional stdenv.isDarwin '' + export DYLD_LIBRARY_PATH="$PWD/.libs:$DYLD_LIBRARY_PATH" + ''; preConfigure = lib.optionalString (lib.versionAtLeast stdenv.hostPlatform.darwinMinVersion "11") '' MACOSX_DEPLOYMENT_TARGET=10.16 diff --git a/pkgs/development/libraries/nettle/default.nix b/pkgs/development/libraries/nettle/default.nix index 0e3c18c0ac3..ed4948cd7f8 100644 --- a/pkgs/development/libraries/nettle/default.nix +++ b/pkgs/development/libraries/nettle/default.nix @@ -1,10 +1,10 @@ { callPackage, fetchurl }: callPackage ./generic.nix rec { - version = "3.7.3"; + version = "3.8"; src = fetchurl { url = "mirror://gnu/nettle/nettle-${version}.tar.gz"; - sha256 = "1w5wwc3q0r97d2ifhx77cw7y8s20bm8x52is9j93p2h47yq5w7v6"; + hash = "sha256-dXbGhIHBmPZEsIwWDRpIULqUSeMIBpRVtSEzGfI06OY="; }; } diff --git a/pkgs/development/libraries/openal-soft/default.nix b/pkgs/development/libraries/openal-soft/default.nix index 23812229a9d..368b1b911eb 100644 --- a/pkgs/development/libraries/openal-soft/default.nix +++ b/pkgs/development/libraries/openal-soft/default.nix @@ -8,13 +8,13 @@ stdenv.mkDerivation rec { pname = "openal-soft"; - version = "1.22.0"; + version = "1.22.2"; src = fetchFromGitHub { owner = "kcat"; repo = "openal-soft"; rev = version; - sha256 = "sha256-Y2KhPkwtG6tBzUhSqwV2DVnOjZwxPihidLKahjaIvyU="; + sha256 = "sha256-MVM0qCZDWcO7/Hnco+0dBqzBLcWD279xjx0slxxlc4w="; }; # this will make it find its own data files (e.g. HRTF profiles) diff --git a/pkgs/development/libraries/opencv/4.x.nix b/pkgs/development/libraries/opencv/4.x.nix index edc8acaa92b..ce7f9822335 100644 --- a/pkgs/development/libraries/opencv/4.x.nix +++ b/pkgs/development/libraries/opencv/4.x.nix @@ -26,6 +26,8 @@ , enableEXR ? !stdenv.isDarwin , openexr , ilmbase +, enableJPEG2000 ? true +, openjpeg , enableEigen ? true , eigen , enableOpenblas ? true @@ -256,6 +258,7 @@ stdenv.mkDerivation { ++ lib.optional enableTIFF libtiff ++ lib.optional enableWebP libwebp ++ lib.optionals enableEXR [ openexr ilmbase ] + ++ lib.optional enableJPEG2000 openjpeg ++ lib.optional enableFfmpeg ffmpeg ++ lib.optionals (enableFfmpeg && stdenv.isDarwin) [ VideoDecodeAcceleration bzip2 ] @@ -307,6 +310,8 @@ stdenv.mkDerivation { (opencvFlag "JPEG" enableJPEG) (opencvFlag "PNG" enablePNG) (opencvFlag "OPENEXR" enableEXR) + (opencvFlag "OPENJPEG" enableJPEG2000) + "-DWITH_JASPER=OFF" # OpenCV falls back to a vendored copy of Jasper when OpenJPEG is disabled (opencvFlag "CUDA" enableCuda) (opencvFlag "CUBLAS" enableCuda) (opencvFlag "TBB" enableTbb) diff --git a/pkgs/development/libraries/openldap/default.nix b/pkgs/development/libraries/openldap/default.nix index 551a0827eee..f357b8d4b72 100644 --- a/pkgs/development/libraries/openldap/default.nix +++ b/pkgs/development/libraries/openldap/default.nix @@ -15,46 +15,13 @@ stdenv.mkDerivation rec { pname = "openldap"; - version = "2.6.2"; + version = "2.6.3"; src = fetchurl { url = "https://www.openldap.org/software/download/OpenLDAP/openldap-release/${pname}-${version}.tgz"; - hash = "sha256-gdCTRSMutiSG7PWsrNLFbAxFtKbIwGZhLn9CGiOhz4c"; + hash = "sha256-0qKh1x3z13OWscFq11AuZ030RuBgcrDlpOlBw9BsDUY="; }; - patches = [ - # ITS#9840 - ldif-filter: fix parallel build failure - (fetchpatch { - url = "https://github.com/openldap/openldap/commit/7d977f51e6dfa570a471d163b9e8255bdd3dc12f.patch"; - hash = "sha256:1vid6pj2gmqywbghnd380x19ml241ldc1fyslb6br6q27zpgbdlp"; - }) - # ITS#9840 - libraries/Makefile.in: ignore the mkdir errors - (fetchpatch { - url = "https://github.com/openldap/openldap/commit/71f24015c312171c00ce94c9ff9b9c6664bdca8d.patch"; - hash = "sha256:1a81vv6nkhgiadnj4g1wyzgzdp2zd151h0vkwvv9gzmqvhwcnc04"; - }) - # ITS#7165 back-mdb: check for stale readers on - (fetchpatch { - url = "https://github.com/openldap/openldap/commit/7e7f01c301db454e8c507999c77b55a1d97efc21.patch"; - hash = "sha256:1fc2yck2gn3zlpfqjdn56ar206npi8cmb8yg5ny4lww0ygmyzdfz"; - }) - # ITS#9858 back-mdb: delay indexer task startup - (fetchpatch { - url = "https://github.com/openldap/openldap/commit/ac061c684cc79d64ab4089fe3020921a0064a307.patch"; - hash = "sha256:01f0y50zlcj6n5mfkmb0di4p5vrlgn31zccx4a9k5m8vzxaqmw9d"; - }) - # ITS#9858 back-mdb: fix index reconfig - (fetchpatch { - url = "https://github.com/openldap/openldap/commit/c43c7a937cfb3a781f99b458b7ad71eb564a2bc2.patch"; - hash = "sha256:02yh0c8cyx14iir5qhfam5shrg5d3115s2nv0pmqdj6najrqc5mm"; - }) - # ITS#9157: check for NULL ld - (fetchpatch { - url = "https://github.com/openldap/openldap/commit/6675535cd6ad01f9519ecd5d75061a74bdf095c7.patch"; - hash = "sha256:0dali5ifcwba8400s065f0fizl9h44i0mzb06qgxhygff6yfrgif"; - }) - ]; - # TODO: separate "out" and "bin" outputs = [ "out" @@ -93,18 +60,18 @@ stdenv.mkDerivation rec { "ac_cv_func_memcmp_working=yes" ] ++ lib.optional stdenv.isFreeBSD "--with-pic"; - makeFlags = [ + NIX_CFLAGS_COMPILE = [ "-DLDAPI_SOCK=\"/run/openldap/ldapi\"" ]; + + makeFlags= [ "CC=${stdenv.cc.targetPrefix}cc" "STRIP=" # Disable install stripping as it breaks cross-compiling. We strip binaries anyway in fixupPhase. + "STRIP_OPTS=" "prefix=${placeholder "out"}" - "sysconfdir=${placeholder "out"}/etc" + "sysconfdir=/etc" "systemdsystemunitdir=${placeholder "out"}/lib/systemd/system" # contrib modules require these "moduledir=${placeholder "out"}/lib/modules" "mandir=${placeholder "out"}/share/man" - ] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ - # Can be unconditional, doing it like this to prevent a mass rebuild. - "STRIP_OPTS=" ]; extraContribModules = [ @@ -134,6 +101,7 @@ stdenv.mkDerivation rec { installFlags = [ "prefix=${placeholder "out"}" + "sysconfdir=${placeholder "out"}/etc" "moduledir=${placeholder "out"}/lib/modules" "INSTALL=install" ]; diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix index 74e5d318bcb..0b4050c76cc 100644 --- a/pkgs/development/libraries/openssl/default.nix +++ b/pkgs/development/libraries/openssl/default.nix @@ -44,9 +44,23 @@ let substituteInPlace crypto/async/arch/async_posix.h \ --replace '!defined(__ANDROID__) && !defined(__OpenBSD__)' \ '!defined(__ANDROID__) && !defined(__OpenBSD__) && 0' + '' + # Move ENGINESDIR into OPENSSLDIR for static builds, in order to move + # it to the separate etc output. + + lib.optionalString static '' + substituteInPlace Configurations/unix-Makefile.tmpl \ + --replace 'ENGINESDIR=$(libdir)/engines-{- $sover_dirname -}' \ + 'ENGINESDIR=$(OPENSSLDIR)/engines-{- $sover_dirname -}' ''; - outputs = [ "bin" "dev" "out" "man" ] ++ lib.optional withDocs "doc"; + outputs = [ "bin" "dev" "out" "man" ] + ++ lib.optional withDocs "doc" + # Separate output for the runtime dependencies of the static build. + # Specifically, move OPENSSLDIR into this output, as its path will be + # compiled into 'libcrypto.a'. This makes it a runtime dependency of + # any package that statically links openssl, so we want to keep that + # output minimal. + ++ lib.optional static "etc"; setOutputFlags = false; separateDebugInfo = !stdenv.hostPlatform.isDarwin && @@ -102,7 +116,14 @@ let configureFlags = [ "shared" # "shared" builds both shared and static libraries "--libdir=lib" - "--openssldir=etc/ssl" + (if !static then + "--openssldir=etc/ssl" + else + # Move OPENSSLDIR to the 'etc' output for static builds. Prepend '/.' + # to the path to make it appear absolute before variable expansion, + # else the 'prefix' would be prepended to it. + "--openssldir=/.$(etc)/etc/ssl" + ) ] ++ lib.optionals withCryptodev [ "-DHAVE_CRYPTODEV" "-DUSE_CRYPTODEV_DIGESTS" @@ -140,6 +161,9 @@ let if [ -n "$(echo $out/lib/*.so $out/lib/*.dylib $out/lib/*.dll)" ]; then rm "$out/lib/"*.a fi + + # 'etc' is a separate output on static builds only. + etc=$out '') + lib.optionalString (!stdenv.hostPlatform.isWindows) # Fix bin/c_rehash's perl interpreter line # @@ -161,14 +185,15 @@ let mv $out/include $dev/ # remove dependency on Perl at runtime - rm -r $out/etc/ssl/misc + rm -r $etc/etc/ssl/misc - rmdir $out/etc/ssl/{certs,private} + rmdir $etc/etc/ssl/{certs,private} ''; postFixup = lib.optionalString (!stdenv.hostPlatform.isWindows) '' - # Check to make sure the main output doesn't depend on perl - if grep -r '${buildPackages.perl}' $out; then + # Check to make sure the main output and the static runtime dependencies + # don't depend on perl + if grep -r '${buildPackages.perl}' $out $etc; then echo "Found an erroneous dependency on perl ^^^" >&2 exit 1 fi diff --git a/pkgs/development/libraries/qt-5/5.12/default.nix b/pkgs/development/libraries/qt-5/5.12/default.nix index da54865a18b..5d7b7202945 100644 --- a/pkgs/development/libraries/qt-5/5.12/default.nix +++ b/pkgs/development/libraries/qt-5/5.12/default.nix @@ -164,7 +164,7 @@ let inherit bison cups harfbuzz libGL; withGtk3 = !stdenv.isDarwin; inherit dconf gtk3; inherit debug developerBuild decryptSslTraffic; - inherit (darwin.apple_sdk.frameworks) AGL AppKit ApplicationServices Carbon Cocoa CoreAudio CoreBluetooth + inherit (darwin.apple_sdk.frameworks) AGL AppKit ApplicationServices AVFoundation Carbon Cocoa CoreAudio CoreBluetooth CoreLocation CoreServices DiskArbitration Foundation OpenGL MetalKit IOKit; inherit (darwin) libobjc; }; diff --git a/pkgs/development/libraries/qt-5/5.14/default.nix b/pkgs/development/libraries/qt-5/5.14/default.nix index dadf9228eb6..32630810b49 100644 --- a/pkgs/development/libraries/qt-5/5.14/default.nix +++ b/pkgs/development/libraries/qt-5/5.14/default.nix @@ -162,7 +162,7 @@ let inherit bison cups harfbuzz libGL; withGtk3 = !stdenv.isDarwin; inherit dconf gtk3; inherit debug developerBuild decryptSslTraffic; - inherit (darwin.apple_sdk.frameworks) AGL AppKit ApplicationServices Carbon Cocoa CoreAudio CoreBluetooth + inherit (darwin.apple_sdk.frameworks) AGL AppKit ApplicationServices AVFoundation Carbon Cocoa CoreAudio CoreBluetooth CoreLocation CoreServices DiskArbitration Foundation OpenGL MetalKit IOKit; inherit (darwin) libobjc; }; diff --git a/pkgs/development/libraries/qt-5/5.15/default.nix b/pkgs/development/libraries/qt-5/5.15/default.nix index 2c7ddc6e21d..e3f94ba8ffe 100644 --- a/pkgs/development/libraries/qt-5/5.15/default.nix +++ b/pkgs/development/libraries/qt-5/5.15/default.nix @@ -43,6 +43,8 @@ let # Patch framework detection to support X.framework/X.tbd, # extending the current support for X.framework/X. ./qtbase.patch.d/0012-qtbase-tbd-frameworks.patch + + ./qtbase.patch.d/0014-aarch64-darwin.patch ] ++ [ ./qtbase.patch.d/0003-qtbase-mkspecs.patch ./qtbase.patch.d/0004-qtbase-replace-libdir.patch @@ -119,7 +121,7 @@ let inherit bison cups harfbuzz libGL; withGtk3 = !stdenv.isDarwin; inherit dconf gtk3; inherit developerBuild decryptSslTraffic; - inherit (darwin.apple_sdk.frameworks) AGL AppKit ApplicationServices Carbon Cocoa CoreAudio CoreBluetooth + inherit (darwin.apple_sdk.frameworks) AGL AppKit ApplicationServices AVFoundation Carbon Cocoa CoreAudio CoreBluetooth CoreLocation CoreServices DiskArbitration Foundation OpenGL MetalKit IOKit; inherit (darwin) libobjc; }; diff --git a/pkgs/development/libraries/qt-5/5.15/qtbase.patch.d/0014-aarch64-darwin.patch b/pkgs/development/libraries/qt-5/5.15/qtbase.patch.d/0014-aarch64-darwin.patch new file mode 100644 index 00000000000..8ef1b08a5b8 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.15/qtbase.patch.d/0014-aarch64-darwin.patch @@ -0,0 +1,287 @@ +From abc52460201bc5c7603505bb187138b0c59291aa Mon Sep 17 00:00:00 2001 +From: Mushroom <mushroom@watchingyour.tv> +Date: Sun, 20 Dec 2020 00:11:41 +0000 +Subject: [PATCH] [QtBase] Split macOS platforms by architecture + +Currently macOS only has one platform, which forces the default arch to +x86_64. This patch splits the platforms by architecture, and defaults to +the same as the host. + +This stops M1-based macs from compiling x64 binaries by default, +instead making them compile native binaries. + +[ChangeLog][QtBase][Platform Specific Changes][OS X] Split macOS +platforms so it doesn't default to the x64 architecture every time + +Change-Id: I34891b107bb24f68371df1c8f087eb0ad5b5dd95 +--- + configure | 9 +++- + .../clang-macx-desktop.conf} | 8 ++-- + mkspecs/common/macx.conf | 1 - + .../Info.plist.app | 0 + .../Info.plist.dSYM.in | 0 + .../Info.plist.disable_highdpi | 0 + .../Info.plist.lib | 0 + mkspecs/macx-clang-arm64/qmake.conf | 7 ++++ + .../qplatformdefs.h | 0 + mkspecs/macx-clang-x64/Info.plist.app | 24 +++++++++++ + mkspecs/macx-clang-x64/Info.plist.dSYM.in | 18 ++++++++ + .../macx-clang-x64/Info.plist.disable_highdpi | 8 ++++ + mkspecs/macx-clang-x64/Info.plist.lib | 20 +++++++++ + mkspecs/macx-clang-x64/qmake.conf | 7 ++++ + mkspecs/macx-clang-x64/qplatformdefs.h | 41 +++++++++++++++++++ + 15 files changed, 137 insertions(+), 6 deletions(-) + rename mkspecs/{macx-clang/qmake.conf => common/clang-macx-desktop.conf} (83%) + rename mkspecs/{macx-clang => macx-clang-arm64}/Info.plist.app (100%) + rename mkspecs/{macx-clang => macx-clang-arm64}/Info.plist.dSYM.in (100%) + rename mkspecs/{macx-clang => macx-clang-arm64}/Info.plist.disable_highdpi (100%) + rename mkspecs/{macx-clang => macx-clang-arm64}/Info.plist.lib (100%) + create mode 100644 mkspecs/macx-clang-arm64/qmake.conf + rename mkspecs/{macx-clang => macx-clang-arm64}/qplatformdefs.h (100%) + create mode 100644 mkspecs/macx-clang-x64/Info.plist.app + create mode 100644 mkspecs/macx-clang-x64/Info.plist.dSYM.in + create mode 100644 mkspecs/macx-clang-x64/Info.plist.disable_highdpi + create mode 100644 mkspecs/macx-clang-x64/Info.plist.lib + create mode 100644 mkspecs/macx-clang-x64/qmake.conf + create mode 100644 mkspecs/macx-clang-x64/qplatformdefs.h + +diff --git a/configure b/configure +index b6c9b462f24..a86f2ceaa5b 100755 +--- a/configure ++++ b/configure +@@ -556,7 +556,14 @@ PLATFORM_NOTES= + if [ -z "$PLATFORM" ]; then + case "$UNAME_SYSTEM:$UNAME_RELEASE" in + Darwin:*) +- PLATFORM=macx-clang ++ case "$UNAME_MACHINE" in ++ arm64) ++ PLATFORM=macx-clang-arm64 ++ ;; ++ *) ++ PLATFORM=macx-clang-x64 ++ ;; ++ esac + ;; + AIX:*) + #PLATFORM=aix-g++ +diff --git a/mkspecs/macx-clang/qmake.conf b/mkspecs/common/clang-macx-desktop.conf +similarity index 83% +rename from mkspecs/macx-clang/qmake.conf +rename to mkspecs/common/clang-macx-desktop.conf +index 0cf1f31b60d..042319a2aa3 100644 +--- a/mkspecs/macx-clang/qmake.conf ++++ b/mkspecs/common/clang-macx-desktop.conf +@@ -24,9 +24,9 @@ QMAKE_LIBS_X11 = -lX11 -lXext -lm + QMAKE_LIBDIR_X11 = /opt/X11/lib + QMAKE_INCDIR_X11 = /opt/X11/include + +-include(../common/macx.conf) +-include(../common/gcc-base-mac.conf) +-include(../common/clang.conf) +-include(../common/clang-mac.conf) ++include(macx.conf) ++include(gcc-base-mac.conf) ++include(clang.conf) ++include(clang-mac.conf) + + load(qt_config) +diff --git a/mkspecs/common/macx.conf b/mkspecs/common/macx.conf +index d16b77acb8e..4ba0a8eaa36 100644 +--- a/mkspecs/common/macx.conf ++++ b/mkspecs/common/macx.conf +@@ -6,7 +6,6 @@ QMAKE_PLATFORM += macos osx macx + QMAKE_MAC_SDK = macosx + + QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.13 +-QMAKE_APPLE_DEVICE_ARCHS = x86_64 + + # Should be 10.15, but as long as the CI builds with + # older SDKs we have to keep this. +diff --git a/mkspecs/macx-clang/Info.plist.app b/mkspecs/macx-clang-arm64/Info.plist.app +similarity index 100% +rename from mkspecs/macx-clang/Info.plist.app +rename to mkspecs/macx-clang-arm64/Info.plist.app +diff --git a/mkspecs/macx-clang/Info.plist.dSYM.in b/mkspecs/macx-clang-arm64/Info.plist.dSYM.in +similarity index 100% +rename from mkspecs/macx-clang/Info.plist.dSYM.in +rename to mkspecs/macx-clang-arm64/Info.plist.dSYM.in +diff --git a/mkspecs/macx-clang/Info.plist.disable_highdpi b/mkspecs/macx-clang-arm64/Info.plist.disable_highdpi +similarity index 100% +rename from mkspecs/macx-clang/Info.plist.disable_highdpi +rename to mkspecs/macx-clang-arm64/Info.plist.disable_highdpi +diff --git a/mkspecs/macx-clang/Info.plist.lib b/mkspecs/macx-clang-arm64/Info.plist.lib +similarity index 100% +rename from mkspecs/macx-clang/Info.plist.lib +rename to mkspecs/macx-clang-arm64/Info.plist.lib +diff --git a/mkspecs/macx-clang-arm64/qmake.conf b/mkspecs/macx-clang-arm64/qmake.conf +new file mode 100644 +index 00000000000..0cc2361e696 +--- /dev/null ++++ b/mkspecs/macx-clang-arm64/qmake.conf +@@ -0,0 +1,7 @@ ++# ++# qmake configuration for Clang on OS X (arm64) ++# ++ ++QMAKE_APPLE_DEVICE_ARCHS=arm64 ++ ++include(../common/clang-macx-desktop.conf) +diff --git a/mkspecs/macx-clang/qplatformdefs.h b/mkspecs/macx-clang-arm64/qplatformdefs.h +similarity index 100% +rename from mkspecs/macx-clang/qplatformdefs.h +rename to mkspecs/macx-clang-arm64/qplatformdefs.h +diff --git a/mkspecs/macx-clang-x64/Info.plist.app b/mkspecs/macx-clang-x64/Info.plist.app +new file mode 100644 +index 00000000000..fa592af0897 +--- /dev/null ++++ b/mkspecs/macx-clang-x64/Info.plist.app +@@ -0,0 +1,24 @@ ++<?xml version="1.0" encoding="UTF-8"?> ++<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> ++<plist version="1.0"> ++<dict> ++ <key>CFBundleExecutable</key> ++ <string>${EXECUTABLE_NAME}</string> ++ <key>CFBundleIconFile</key> ++ <string>${ASSETCATALOG_COMPILER_APPICON_NAME}</string> ++ <key>CFBundleIdentifier</key> ++ <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> ++ <key>CFBundlePackageType</key> ++ <string>APPL</string> ++ <key>CFBundleSignature</key> ++ <string>${QMAKE_PKGINFO_TYPEINFO}</string> ++ <key>LSMinimumSystemVersion</key> ++ <string>${MACOSX_DEPLOYMENT_TARGET}</string> ++ <key>NOTE</key> ++ <string>This file was generated by Qt/QMake.</string> ++ <key>NSPrincipalClass</key> ++ <string>NSApplication</string> ++ <key>NSSupportsAutomaticGraphicsSwitching</key> ++ <true/> ++</dict> ++</plist> +diff --git a/mkspecs/macx-clang-x64/Info.plist.dSYM.in b/mkspecs/macx-clang-x64/Info.plist.dSYM.in +new file mode 100644 +index 00000000000..a8c8d0d4fb5 +--- /dev/null ++++ b/mkspecs/macx-clang-x64/Info.plist.dSYM.in +@@ -0,0 +1,18 @@ ++<?xml version=\"1.0\" encoding=\"UTF-8\"?> ++<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\"> ++<plist version=\"1.0\"> ++ <dict> ++ <key>CFBundleIdentifier</key> ++ <string>com.apple.xcode.dsym.$${BUNDLEIDENTIFIER}</string> ++ <key>CFBundlePackageType</key> ++ <string>dSYM</string> ++ <key>CFBundleSignature</key> ++ <string>????</string> ++!!IF !isEmpty(VERSION) ++ <key>CFBundleShortVersionString</key> ++ <string>$${VER_MAJ}.$${VER_MIN}</string> ++ <key>CFBundleVersion</key> ++ <string>$${VER_MAJ}.$${VER_MIN}.$${VER_PAT}</string> ++!!ENDIF ++ </dict> ++</plist> +diff --git a/mkspecs/macx-clang-x64/Info.plist.disable_highdpi b/mkspecs/macx-clang-x64/Info.plist.disable_highdpi +new file mode 100644 +index 00000000000..a9b89888ad4 +--- /dev/null ++++ b/mkspecs/macx-clang-x64/Info.plist.disable_highdpi +@@ -0,0 +1,8 @@ ++<?xml version="1.0" encoding="UTF-8"?> ++<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> ++<plist version="1.0"> ++<dict> ++ <key>NSHighResolutionCapable</key> ++ <string>NO</string> ++</dict> ++</plist> +diff --git a/mkspecs/macx-clang-x64/Info.plist.lib b/mkspecs/macx-clang-x64/Info.plist.lib +new file mode 100644 +index 00000000000..34752ec40d9 +--- /dev/null ++++ b/mkspecs/macx-clang-x64/Info.plist.lib +@@ -0,0 +1,20 @@ ++<?xml version="1.0" encoding="UTF-8"?> ++<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> ++<plist version="1.0"> ++<dict> ++ <key>CFBundleExecutable</key> ++ <string>${EXECUTABLE_NAME}</string> ++ <key>CFBundleIdentifier</key> ++ <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> ++ <key>CFBundlePackageType</key> ++ <string>FMWK</string> ++ <key>CFBundleShortVersionString</key> ++ <string>${QMAKE_SHORT_VERSION}</string> ++ <key>CFBundleSignature</key> ++ <string>${QMAKE_PKGINFO_TYPEINFO}</string> ++ <key>CFBundleVersion</key> ++ <string>${QMAKE_FULL_VERSION}</string> ++ <key>NOTE</key> ++ <string>Please, do NOT change this file -- It was generated by Qt/QMake.</string> ++</dict> ++</plist> +diff --git a/mkspecs/macx-clang-x64/qmake.conf b/mkspecs/macx-clang-x64/qmake.conf +new file mode 100644 +index 00000000000..1ac373b53b4 +--- /dev/null ++++ b/mkspecs/macx-clang-x64/qmake.conf +@@ -0,0 +1,7 @@ ++# ++# qmake configuration for Clang on OS X (arm64) ++# ++ ++QMAKE_APPLE_DEVICE_ARCHS=x86_64 ++ ++include(../common/clang-macx-desktop.conf) +diff --git a/mkspecs/macx-clang-x64/qplatformdefs.h b/mkspecs/macx-clang-x64/qplatformdefs.h +new file mode 100644 +index 00000000000..063491dd900 +--- /dev/null ++++ b/mkspecs/macx-clang-x64/qplatformdefs.h +@@ -0,0 +1,41 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2016 The Qt Company Ltd. ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the qmake spec of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include "../common/mac/qplatformdefs.h" ++ diff --git a/pkgs/development/libraries/qt-5/modules/qtbase.nix b/pkgs/development/libraries/qt-5/modules/qtbase.nix index 9978f611456..2dd9edcf5d2 100644 --- a/pkgs/development/libraries/qt-5/modules/qtbase.nix +++ b/pkgs/development/libraries/qt-5/modules/qtbase.nix @@ -4,7 +4,7 @@ , coreutils, bison, flex, gdb, gperf, lndir, perl, pkg-config, python3 , which # darwin support -, libiconv, libobjc, xcbuild, AGL, AppKit, ApplicationServices, Carbon, Cocoa, CoreAudio, CoreBluetooth +, libiconv, libobjc, xcbuild, AGL, AppKit, ApplicationServices, AVFoundation, Carbon, Cocoa, CoreAudio, CoreBluetooth , CoreLocation, CoreServices, DiskArbitration, Foundation, OpenGL, MetalKit, IOKit , dbus, fontconfig, freetype, glib, harfbuzz, icu, libdrm, libX11, libXcomposite @@ -52,7 +52,7 @@ stdenv.mkDerivation { ] ++ ( if stdenv.isDarwin then [ # TODO: move to buildInputs, this should not be propagated. - AGL AppKit ApplicationServices Carbon Cocoa CoreAudio CoreBluetooth + AGL AppKit ApplicationServices AVFoundation Carbon Cocoa CoreAudio CoreBluetooth CoreLocation CoreServices DiskArbitration Foundation OpenGL libobjc libiconv MetalKit IOKit ] else [ @@ -284,7 +284,6 @@ stdenv.mkDerivation { ] ++ lib.optional (compareVersion "5.15.0" < 0) "-v" ++ ( if stdenv.isDarwin then [ - "-platform macx-clang" "-no-fontconfig" "-qt-freetype" "-qt-libpng" @@ -377,7 +376,7 @@ stdenv.mkDerivation { # error: unknown target CPU 'armv8.3-a+crypto+sha2+aes+crc+fp16+lse+simd+ras+rdm+rcpc' # note: valid target CPU values are: nocona, core2, penryn, ..., znver1, znver2, x86-64 # it seems the qmake/cmake passes x86_64 as preferred architecture somewhere - broken = stdenv.isDarwin && stdenv.isAarch64; + broken = stdenv.isDarwin && stdenv.isAarch64 && (compareVersion "5.15.3" < 0); }; } diff --git a/pkgs/development/libraries/sqlite/default.nix b/pkgs/development/libraries/sqlite/default.nix index e9fbc06090d..0c90d2a7060 100644 --- a/pkgs/development/libraries/sqlite/default.nix +++ b/pkgs/development/libraries/sqlite/default.nix @@ -17,13 +17,13 @@ in stdenv.mkDerivation rec { pname = "sqlite${optionalString interactive "-interactive"}"; - version = "3.39.1"; + version = "3.39.2"; # nixpkgs-update: no auto update # NB! Make sure to update ./tools.nix src (in the same directory). src = fetchurl { url = "https://sqlite.org/2022/sqlite-autoconf-${archiveVersion version}.tar.gz"; - sha256 = "sha256-h8jnp/oMaKso4gi6SfOiKlYADb9TpvkCBuK8WEOTHMQ="; + sha256 = "sha256-hSvophg6F7pHzuC7/3QAt6pa/9KDvzvu/DT80IiiOd4="; }; outputs = [ "bin" "dev" "out" ]; diff --git a/pkgs/development/libraries/sqlite/tools.nix b/pkgs/development/libraries/sqlite/tools.nix index df898863b0e..1d559dcb38b 100644 --- a/pkgs/development/libraries/sqlite/tools.nix +++ b/pkgs/development/libraries/sqlite/tools.nix @@ -4,12 +4,12 @@ let archiveVersion = import ./archive-version.nix lib; mkTool = { pname, makeTarget, description, homepage, mainProgram }: stdenv.mkDerivation rec { inherit pname; - version = "3.39.1"; + version = "3.39.2"; # nixpkgs-update: no auto update src = assert version == sqlite.version; fetchurl { url = "https://sqlite.org/2022/sqlite-src-${archiveVersion version}.zip"; - sha256 = "sha256-Nmx6u+5dvoiCzXV4phpu0/XQjF9t41NaAAMSW0ZGzFc="; + sha256 = "sha256-6TPXcAD0Xz+8hgXwBQWGowE1Bajem0QDK9AO1y8VhvA="; }; nativeBuildInputs = [ unzip ]; diff --git a/pkgs/development/python-modules/jaxlib/bin.nix b/pkgs/development/python-modules/jaxlib/bin.nix index 88d210caa9e..a041edbd2cc 100644 --- a/pkgs/development/python-modules/jaxlib/bin.nix +++ b/pkgs/development/python-modules/jaxlib/bin.nix @@ -18,7 +18,7 @@ , autoPatchelfHook , buildPythonPackage , config -, cudnn +, cudnn ? cudaPackages.cudnn , fetchurl , flatbuffers , isPy39 diff --git a/pkgs/development/python-modules/prompt-toolkit/default.nix b/pkgs/development/python-modules/prompt-toolkit/default.nix index 02b188d2fda..f87558e5194 100644 --- a/pkgs/development/python-modules/prompt-toolkit/default.nix +++ b/pkgs/development/python-modules/prompt-toolkit/default.nix @@ -30,6 +30,8 @@ buildPythonPackage rec { ]; disabledTests = [ + # tests/test_completion.py:206: AssertionError + # https://github.com/prompt-toolkit/python-prompt-toolkit/issues/1657 "test_pathcompleter_can_expanduser" ]; diff --git a/pkgs/development/python-modules/pygobject/3.nix b/pkgs/development/python-modules/pygobject/3.nix index 199435c935c..20c45462d9e 100644 --- a/pkgs/development/python-modules/pygobject/3.nix +++ b/pkgs/development/python-modules/pygobject/3.nix @@ -17,7 +17,7 @@ buildPythonPackage rec { pname = "pygobject"; - version = "3.42.1"; + version = "3.42.2"; outputs = [ "out" "dev" ]; @@ -27,7 +27,7 @@ buildPythonPackage rec { src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "HzS192JN415E61p+tCg1MoW9AwBNVRMaX39/qbkPPMk="; + sha256 = "rehpXipwc4Sd0DFtMdhyjhXh4Lxx2f9tHAnoa+UryVc="; }; depsBuildBuild = [ diff --git a/pkgs/development/python-modules/tomlkit/default.nix b/pkgs/development/python-modules/tomlkit/default.nix index 9a9ecba7d0b..6430bef1aa8 100644 --- a/pkgs/development/python-modules/tomlkit/default.nix +++ b/pkgs/development/python-modules/tomlkit/default.nix @@ -1,5 +1,11 @@ -{ lib, buildPythonPackage, fetchPypi, isPy27 -, enum34, functools32, typing ? null +{ lib +, buildPythonPackage +, fetchPypi +, isPy27 +, enum34 +, functools32, typing ? null +, pytestCheckHook +, pyaml }: buildPythonPackage rec { @@ -15,10 +21,12 @@ buildPythonPackage rec { lib.optionals isPy27 [ enum34 functools32 ] ++ lib.optional isPy27 typing; - # The Pypi tarball doesn't include tests, and the GitHub source isn't - # buildable until we bootstrap poetry, see - # https://github.com/NixOS/nixpkgs/pull/53599#discussion_r245855665 - doCheck = false; + checkInputs = [ + pyaml + pytestCheckHook + ]; + + pythonImportsCheck = [ "tomlkit" ]; meta = with lib; { homepage = "https://github.com/sdispater/tomlkit"; diff --git a/pkgs/development/tools/misc/prelink/default.nix b/pkgs/development/tools/misc/prelink/default.nix index 384829daadf..d5c74284119 100644 --- a/pkgs/development/tools/misc/prelink/default.nix +++ b/pkgs/development/tools/misc/prelink/default.nix @@ -31,16 +31,8 @@ stdenv.mkDerivation rec { libiberty ]; - # Disable some tests because they're failing - preCheck = '' - for f in reloc2 layout1 unprel1 tls3 cxx2 cxx3 quick1 quick2 deps1 deps2; do - echo '#' > testsuite/''${f}.sh - done - patchShebangs --build testsuite - ''; - # most tests fail - doCheck = !stdenv.isAarch64; + doCheck = false; enableParallelBuilding = true; diff --git a/pkgs/games/gnubg/default.nix b/pkgs/games/gnubg/default.nix index 90d54638b61..72762679052 100644 --- a/pkgs/games/gnubg/default.nix +++ b/pkgs/games/gnubg/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchurl, pkg-config, glib, python, gtk2, readline }: +{ lib, stdenv, fetchurl, pkg-config, glib, python2, gtk2, readline }: stdenv.mkDerivation rec { pname = "gnubg"; @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { sha256 = "11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf"; }; - nativeBuildInputs = [ pkg-config python glib ]; + nativeBuildInputs = [ pkg-config python2 glib ]; buildInputs = [ gtk2 readline ]; diff --git a/pkgs/os-specific/linux/alsa-project/alsa-lib/default.nix b/pkgs/os-specific/linux/alsa-project/alsa-lib/default.nix index 4928f114a88..db8ede6feb8 100644 --- a/pkgs/os-specific/linux/alsa-project/alsa-lib/default.nix +++ b/pkgs/os-specific/linux/alsa-project/alsa-lib/default.nix @@ -7,11 +7,11 @@ stdenv.mkDerivation rec { pname = "alsa-lib"; - version = "1.2.7.1"; + version = "1.2.7.2"; src = fetchurl { url = "mirror://alsa/lib/${pname}-${version}.tar.bz2"; - hash = "sha256-BG3ELfz60mkhe+BZVGhhN+XnOX8wQTcvjG3NfXlGHmE="; + hash = "sha256-ijW3IY5Q8qLHk0LQ3pje2BQ5zhnhKAk4Xsm+lZbefC8="; }; patches = [ diff --git a/pkgs/os-specific/linux/kmod/darwin.patch b/pkgs/os-specific/linux/kmod/darwin.patch deleted file mode 100644 index 4d9931b03ee..00000000000 --- a/pkgs/os-specific/linux/kmod/darwin.patch +++ /dev/null @@ -1,138 +0,0 @@ -diff --git a/Makefile.am b/Makefile.am -index 194e111..0a095b5 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -80,8 +80,7 @@ EXTRA_DIST += libkmod/README \ - libkmod/COPYING testsuite/COPYING tools/COPYING COPYING - - libkmod_libkmod_la_LDFLAGS = $(AM_LDFLAGS) \ -- -version-info $(LIBKMOD_CURRENT):$(LIBKMOD_REVISION):$(LIBKMOD_AGE) \ -- -Wl,--version-script=$(top_srcdir)/libkmod/libkmod.sym -+ -version-info $(LIBKMOD_CURRENT):$(LIBKMOD_REVISION):$(LIBKMOD_AGE) - libkmod_libkmod_la_DEPENDENCIES = \ - shared/libshared.la \ - ${top_srcdir}/libkmod/libkmod.sym -@@ -91,8 +90,7 @@ libkmod_libkmod_la_LIBADD = \ - - noinst_LTLIBRARIES += libkmod/libkmod-internal.la - libkmod_libkmod_internal_la_SOURCES = $(libkmod_libkmod_la_SOURCES) --libkmod_libkmod_internal_la_LDFLAGS = $(AM_LDFLAGS) \ -- -Wl,--version-script=$(top_srcdir)/libkmod/libkmod.sym -+libkmod_libkmod_internal_la_LDFLAGS = $(AM_LDFLAGS) - libkmod_libkmod_internal_la_DEPENDENCIES = $(libkmod_libkmod_la_DEPENDENCIES) - libkmod_libkmod_internal_la_LIBADD = $(libkmod_libkmod_la_LIBADD) - -diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c -index 889f264..6f0a285 100644 ---- a/libkmod/libkmod-module.c -+++ b/libkmod/libkmod-module.c -@@ -787,7 +787,11 @@ KMOD_EXPORT int kmod_module_remove_module(struct kmod_module *mod, - flags &= KMOD_REMOVE_FORCE; - flags |= KMOD_REMOVE_NOWAIT; - -+#if defined(__linux__) - err = delete_module(mod->name, flags); -+#else -+ err = -1; -+#endif - if (err != 0) { - err = -errno; - ERR(mod->ctx, "could not remove '%s': %m\n", mod->name); -@@ -879,7 +883,11 @@ KMOD_EXPORT int kmod_module_insert_module(struct kmod_module *mod, - } - size = kmod_file_get_size(mod->file); - -+#if defined(__linux__) - err = init_module(mem, size, args); -+#else -+ err = -1; -+#endif - init_finished: - if (err < 0) { - err = -errno; -diff --git a/libkmod/libkmod-signature.c b/libkmod/libkmod-signature.c -index 429ffbd..17a3b9c 100644 ---- a/libkmod/libkmod-signature.c -+++ b/libkmod/libkmod-signature.c -@@ -17,7 +17,10 @@ - * License along with this library; if not, see <http://www.gnu.org/licenses/>. - */ - -+#if defined(__linux__) - #include <endian.h> -+#endif -+ - #include <inttypes.h> - #include <stdio.h> - #include <stdlib.h> -diff --git a/shared/macro.h b/shared/macro.h -index 4fc5405..b5a2702 100644 ---- a/shared/macro.h -+++ b/shared/macro.h -@@ -53,6 +53,10 @@ - #define CONCATENATE(x, y) XCONCATENATE(x, y) - #define UNIQ(x) CONCATENATE(x, __COUNTER__) - -+#if !defined(__linux__) -+#define program_invocation_short_name getprogname() -+#endif -+ - /* Temporaries for importing index handling */ - #define NOFAIL(x) (x) - #define fatal(x...) do { } while (0) -diff --git a/shared/missing.h b/shared/missing.h -index 4c0d136..ad8ec0f 100644 ---- a/shared/missing.h -+++ b/shared/missing.h -@@ -45,6 +45,9 @@ static inline int finit_module(int fd, const char *uargs, int flags) - #endif - - #if !HAVE_DECL_BE32TOH -+ -+#if defined(__linux__) -+ - #include <endian.h> - #include <byteswap.h> - #if __BYTE_ORDER == __LITTLE_ENDIAN -@@ -52,4 +55,16 @@ static inline int finit_module(int fd, const char *uargs, int flags) - #else - #define be32toh(x) (x) - #endif -+ -+#elif defined(__APPLE__) -+ -+#include <libkern/OSByteOrder.h> -+#define be32toh(x) OSSwapBigToHostInt32(x) -+ -+#else -+ -+#error No be32toh known for platform -+ -+#endif -+ - #endif -diff --git a/shared/util.c b/shared/util.c -index fd2028d..ecb0141 100644 ---- a/shared/util.c -+++ b/shared/util.c -@@ -367,7 +367,7 @@ char *path_make_absolute_cwd(const char *p) - if (path_is_absolute(p)) - return strdup(p); - -- cwd = get_current_dir_name(); -+ cwd = getcwd(NULL, 0); - if (!cwd) - return NULL; - ---- a/shared/util.h 2018-01-31 18:10:59.000000000 +0100 -+++ b/shared/util.h 2020-12-28 19:48:21.000000000 +0100 -@@ -7,6 +7,9 @@ - #include <stdio.h> - #include <sys/types.h> - #include <sys/stat.h> -+#ifdef __APPLE__ -+#include <libgen.h> -+#endif - - #include <shared/macro.h> - diff --git a/pkgs/os-specific/linux/kmod/default.nix b/pkgs/os-specific/linux/kmod/default.nix index 081f83b013a..80233504634 100644 --- a/pkgs/os-specific/linux/kmod/default.nix +++ b/pkgs/os-specific/linux/kmod/default.nix @@ -31,7 +31,7 @@ in stdenv.mkDerivation rec { docbook_xml_dtd_42 # for the man pages ] ++ lib.optionals withDevdoc [ docbook_xml_dtd_43 gtk-doc ]; - buildInputs = [ xz zstd ] ++ lib.optional stdenv.isDarwin elf-header; + buildInputs = [ xz zstd ]; preConfigure = '' ./autogen.sh @@ -46,7 +46,6 @@ in stdenv.mkDerivation rec { ] ++ lib.optional withStatic "--enable-static"; patches = [ ./module-dir.patch ] - ++ lib.optional stdenv.isDarwin ./darwin.patch ++ lib.optional withStatic ./enable-static.patch; postInstall = '' @@ -77,7 +76,7 @@ in stdenv.mkDerivation rec { downloadPage = "https://www.kernel.org/pub/linux/utils/kernel/kmod/"; changelog = "https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git/plain/NEWS?h=v${version}"; license = with licenses; [ lgpl21Plus gpl2Plus ]; # GPLv2+ for tools - platforms = platforms.unix; + platforms = platforms.linux; maintainers = with maintainers; [ artturin ]; }; } diff --git a/pkgs/os-specific/linux/libbpf/default.nix b/pkgs/os-specific/linux/libbpf/default.nix index e9b04ff6418..2c15e3d49ee 100644 --- a/pkgs/os-specific/linux/libbpf/default.nix +++ b/pkgs/os-specific/linux/libbpf/default.nix @@ -9,13 +9,13 @@ stdenv.mkDerivation rec { pname = "libbpf"; - version = "0.8.0"; + version = "0.8.1"; src = fetchFromGitHub { owner = "libbpf"; repo = "libbpf"; rev = "v${version}"; - sha256 = "sha256-D2ASqSZFNShCdRCH8LDocLP/O4sME9nT73rk1KsJeJE="; + sha256 = "sha256-daVS+TErmDU8ksThOvcepg1A61iD8N8GIkC40cmc9/8="; }; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/os-specific/linux/linux-wifi-hotspot/default.nix b/pkgs/os-specific/linux/linux-wifi-hotspot/default.nix index a29fe923f60..e5e4e1dca87 100644 --- a/pkgs/os-specific/linux/linux-wifi-hotspot/default.nix +++ b/pkgs/os-specific/linux/linux-wifi-hotspot/default.nix @@ -14,7 +14,15 @@ , iproute2 , flock , iptables -, gawk }: +, gawk +, coreutils +, gnugrep +, gnused +, kmod +, networkmanager +, procps +}: + stdenv.mkDerivation rec { pname = "linux-wifi-hotspot"; @@ -56,7 +64,21 @@ stdenv.mkDerivation rec { postInstall = '' wrapProgram $out/bin/create_ap \ --prefix PATH : ${lib.makeBinPath [ - hostapd getopt iw which dnsmasq iproute2 flock iptables gawk + coreutils + dnsmasq + flock + gawk + getopt + gnugrep + gnused + hostapd + iproute2 + iptables + iw + kmod + networkmanager + procps + which ]} wrapProgram $out/bin/wihotspot-gui \ diff --git a/pkgs/os-specific/linux/systemd/0001-Start-device-units-for-uninitialised-encrypted-devic.patch b/pkgs/os-specific/linux/systemd/0001-Start-device-units-for-uninitialised-encrypted-devic.patch index 4b11aa1b136..2699c38440c 100644 --- a/pkgs/os-specific/linux/systemd/0001-Start-device-units-for-uninitialised-encrypted-devic.patch +++ b/pkgs/os-specific/linux/systemd/0001-Start-device-units-for-uninitialised-encrypted-devic.patch @@ -1,7 +1,7 @@ -From c8b50208dce4c467c1f85c3db3e05bdcfd43c378 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra <eelco.dolstra@logicblox.com> Date: Tue, 8 Jan 2013 15:46:30 +0100 -Subject: [PATCH 01/18] Start device units for uninitialised encrypted devices +Subject: [PATCH] Start device units for uninitialised encrypted devices This is necessary because the NixOS service that initialises the filesystem depends on the appearance of the device unit. Also, this @@ -27,6 +27,3 @@ index 25b8a590a6..d18999ea87 100644 # add symlink to GPT root disk SUBSYSTEM=="block", ENV{ID_PART_GPT_AUTO_ROOT}=="1", ENV{ID_FS_TYPE}!="crypto_LUKS", SYMLINK+="gpt-auto-root" SUBSYSTEM=="block", ENV{ID_PART_GPT_AUTO_ROOT}=="1", ENV{ID_FS_TYPE}=="crypto_LUKS", SYMLINK+="gpt-auto-root-luks" --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/0002-Don-t-try-to-unmount-nix-or-nix-store.patch b/pkgs/os-specific/linux/systemd/0002-Don-t-try-to-unmount-nix-or-nix-store.patch index e05a7af17dc..f46480d32fe 100644 --- a/pkgs/os-specific/linux/systemd/0002-Don-t-try-to-unmount-nix-or-nix-store.patch +++ b/pkgs/os-specific/linux/systemd/0002-Don-t-try-to-unmount-nix-or-nix-store.patch @@ -1,7 +1,7 @@ -From c884aee4c66c97f592ae0f8ebd97f48a39d8c53c Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra <eelco.dolstra@logicblox.com> Date: Fri, 12 Apr 2013 13:16:57 +0200 -Subject: [PATCH 02/18] Don't try to unmount /nix or /nix/store +Subject: [PATCH] Don't try to unmount /nix or /nix/store They'll still be remounted read-only. @@ -37,6 +37,3 @@ index 820aa8e286..653e43053d 100644 #if ! HAVE_SPLIT_USR || path_equal(path, "/usr") #endif --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/0003-Fix-NixOS-containers.patch b/pkgs/os-specific/linux/systemd/0003-Fix-NixOS-containers.patch index 6db68f5e011..a669350dbed 100644 --- a/pkgs/os-specific/linux/systemd/0003-Fix-NixOS-containers.patch +++ b/pkgs/os-specific/linux/systemd/0003-Fix-NixOS-containers.patch @@ -1,7 +1,7 @@ -From eb3ff76f95bfe248f517e029ea1b152f4983370a Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra <eelco.dolstra@logicblox.com> Date: Wed, 16 Apr 2014 10:59:28 +0200 -Subject: [PATCH 03/18] Fix NixOS containers +Subject: [PATCH] Fix NixOS containers In NixOS containers, the init script is bind-mounted into the container, so checking early whether it exists will fail. @@ -10,7 +10,7 @@ container, so checking early whether it exists will fail. 1 file changed, 2 insertions(+) diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c -index c5fd978395..0fa415f5b5 100644 +index 4ce80bba70..bb149192bd 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -5651,6 +5651,7 @@ static int run(int argc, char *argv[]) { @@ -29,6 +29,3 @@ index c5fd978395..0fa415f5b5 100644 } } else { --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/0004-Look-for-fsck-in-the-right-place.patch b/pkgs/os-specific/linux/systemd/0004-Look-for-fsck-in-the-right-place.patch index ce3263a2bdb..dfaf53e4a31 100644 --- a/pkgs/os-specific/linux/systemd/0004-Look-for-fsck-in-the-right-place.patch +++ b/pkgs/os-specific/linux/systemd/0004-Look-for-fsck-in-the-right-place.patch @@ -1,7 +1,7 @@ -From 789ca236fdc81dc3f514ddad3354eeb5fa8cc7d8 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra <eelco.dolstra@logicblox.com> Date: Thu, 1 May 2014 14:10:10 +0200 -Subject: [PATCH 04/18] Look for fsck in the right place +Subject: [PATCH] Look for fsck in the right place --- src/fsck/fsck.c | 2 +- @@ -20,6 +20,3 @@ index 745d01ff50..dd4eef45c3 100644 cmdline[i++] = arg_repair; cmdline[i++] = "-T"; --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/0005-Add-some-NixOS-specific-unit-directories.patch b/pkgs/os-specific/linux/systemd/0005-Add-some-NixOS-specific-unit-directories.patch index 89804466ad0..8a06e2cf69c 100644 --- a/pkgs/os-specific/linux/systemd/0005-Add-some-NixOS-specific-unit-directories.patch +++ b/pkgs/os-specific/linux/systemd/0005-Add-some-NixOS-specific-unit-directories.patch @@ -1,7 +1,7 @@ -From 6871d9637bc653a976e04cd595697d7244a293e2 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra <eelco.dolstra@logicblox.com> Date: Fri, 19 Dec 2014 14:46:17 +0100 -Subject: [PATCH 05/18] Add some NixOS-specific unit directories +Subject: [PATCH] Add some NixOS-specific unit directories Look in `/nix/var/nix/profiles/default/lib/systemd/{system,user}` for units provided by packages installed into the default profile via @@ -92,7 +92,7 @@ index 1f4331a8bf..4b9a8ae26e 100644 if (!add) diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in -index fc0f8c34fa..162432e77f 100644 +index 693433b34b..5932a21b5b 100644 --- a/src/core/systemd.pc.in +++ b/src/core/systemd.pc.in @@ -38,10 +38,10 @@ systemdsystemconfdir=${systemd_system_conf_dir} @@ -121,6 +121,3 @@ index fc0f8c34fa..162432e77f 100644 systemdusergeneratorpath=${systemd_user_generator_path} systemd_sleep_dir=${root_prefix}/lib/systemd/system-sleep --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/0006-Get-rid-of-a-useless-message-in-user-sessions.patch b/pkgs/os-specific/linux/systemd/0006-Get-rid-of-a-useless-message-in-user-sessions.patch index 2cb85655e67..c06f1255026 100644 --- a/pkgs/os-specific/linux/systemd/0006-Get-rid-of-a-useless-message-in-user-sessions.patch +++ b/pkgs/os-specific/linux/systemd/0006-Get-rid-of-a-useless-message-in-user-sessions.patch @@ -1,7 +1,7 @@ -From 67daf22c74a780e283a493a0f9fdbbea2ce0aaba Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra <eelco.dolstra@logicblox.com> Date: Mon, 11 May 2015 15:39:38 +0200 -Subject: [PATCH 06/18] Get rid of a useless message in user sessions +Subject: [PATCH] Get rid of a useless message in user sessions Namely lots of variants of @@ -26,6 +26,3 @@ index 296b759959..71ef7f27b4 100644 /* If stopping a unit fails continuously we might enter a stop loop here, hence stop acting on the * service being unnecessary after a while. */ --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/0007-hostnamed-localed-timedated-disable-methods-that-cha.patch b/pkgs/os-specific/linux/systemd/0007-hostnamed-localed-timedated-disable-methods-that-cha.patch index e9d9ef6b5fe..174cca335b8 100644 --- a/pkgs/os-specific/linux/systemd/0007-hostnamed-localed-timedated-disable-methods-that-cha.patch +++ b/pkgs/os-specific/linux/systemd/0007-hostnamed-localed-timedated-disable-methods-that-cha.patch @@ -1,8 +1,8 @@ -From 21b9acb1d4202a022475a24db727055f9dd2532a Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Gabriel Ebner <gebner@gebner.org> Date: Sun, 6 Dec 2015 14:26:36 +0100 -Subject: [PATCH 07/18] hostnamed, localed, timedated: disable methods that - change system settings. +Subject: [PATCH] hostnamed, localed, timedated: disable methods that change + system settings. --- src/hostname/hostnamed.c | 6 ++++++ @@ -103,6 +103,3 @@ index 9ca5d37b75..e41d8d73df 100644 r = context_update_ntp_status(c, bus, m); if (r < 0) return r; --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/0008-Fix-hwdb-paths.patch b/pkgs/os-specific/linux/systemd/0008-Fix-hwdb-paths.patch index 67e63298f23..69bd1cc97b2 100644 --- a/pkgs/os-specific/linux/systemd/0008-Fix-hwdb-paths.patch +++ b/pkgs/os-specific/linux/systemd/0008-Fix-hwdb-paths.patch @@ -1,7 +1,7 @@ -From 3894fcd76e5791e094c685c0095006b6867893c1 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov <ab@fmap.me> Date: Thu, 7 Jul 2016 02:47:13 +0300 -Subject: [PATCH 08/18] Fix hwdb paths +Subject: [PATCH] Fix hwdb paths Patch by vcunat. --- @@ -23,6 +23,3 @@ index 62d27f7b89..87318e041b 100644 - UDEVLIBEXECDIR "/hwdb.bin\0" + "/etc/udev/hwdb.bin\0" + --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/0009-Change-usr-share-zoneinfo-to-etc-zoneinfo.patch b/pkgs/os-specific/linux/systemd/0009-Change-usr-share-zoneinfo-to-etc-zoneinfo.patch index 94d57bc7c05..106eba2bed8 100644 --- a/pkgs/os-specific/linux/systemd/0009-Change-usr-share-zoneinfo-to-etc-zoneinfo.patch +++ b/pkgs/os-specific/linux/systemd/0009-Change-usr-share-zoneinfo-to-etc-zoneinfo.patch @@ -1,7 +1,7 @@ -From 322fe2a15ac92d38f6952a2f7fd66e56eaa0f1f4 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov <ab@fmap.me> Date: Tue, 11 Oct 2016 13:12:08 +0300 -Subject: [PATCH 09/18] Change /usr/share/zoneinfo to /etc/zoneinfo +Subject: [PATCH] Change /usr/share/zoneinfo to /etc/zoneinfo NixOS uses this path. --- @@ -35,7 +35,7 @@ index e486474c44..5f373d0723 100644 <literal>Etc/UTC</literal>. The resulting link should lead to the corresponding binary diff --git a/src/basic/time-util.c b/src/basic/time-util.c -index c309369406..e0d84a7cfa 100644 +index 0ad8de4b9a..b794c6c7d0 100644 --- a/src/basic/time-util.c +++ b/src/basic/time-util.c @@ -1281,7 +1281,7 @@ static int get_timezones_from_zone1970_tab(char ***ret) { @@ -88,7 +88,7 @@ index 39160182ef..8dcc3307c8 100644 (void) mkdir_parents(etc_localtime, 0755); if (symlink(e, etc_localtime) < 0) diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c -index 0fa415f5b5..b4404fff49 100644 +index bb149192bd..08751ed944 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1901,8 +1901,8 @@ int userns_mkdir(const char *root, const char *path, mode_t mode, uid_t uid, gid @@ -136,6 +136,3 @@ index e41d8d73df..ff1a384b3b 100644 if (!p) return -ENOMEM; --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/0010-localectl-use-etc-X11-xkb-for-list-x11.patch b/pkgs/os-specific/linux/systemd/0010-localectl-use-etc-X11-xkb-for-list-x11.patch index 23d12fb2f82..a3315a1e657 100644 --- a/pkgs/os-specific/linux/systemd/0010-localectl-use-etc-X11-xkb-for-list-x11.patch +++ b/pkgs/os-specific/linux/systemd/0010-localectl-use-etc-X11-xkb-for-list-x11.patch @@ -1,7 +1,7 @@ -From 35dd77fafe73cc4a648f101163945cbcae8ed6b9 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Imuli <i@imu.li> Date: Wed, 19 Oct 2016 08:46:47 -0400 -Subject: [PATCH 10/18] localectl: use /etc/X11/xkb for list-x11-* +Subject: [PATCH] localectl: use /etc/X11/xkb for list-x11-* NixOS has an option to link the xkb data files to /etc/X11, but not to /usr/share/X11. @@ -22,6 +22,3 @@ index 661d54c27d..e98b578531 100644 if (!f) return log_error_errno(errno, "Failed to open keyboard mapping list. %m"); --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/0011-build-don-t-create-statedir-and-don-t-touch-prefixdi.patch b/pkgs/os-specific/linux/systemd/0011-build-don-t-create-statedir-and-don-t-touch-prefixdi.patch index 824ddb33bfb..75d113d0033 100644 --- a/pkgs/os-specific/linux/systemd/0011-build-don-t-create-statedir-and-don-t-touch-prefixdi.patch +++ b/pkgs/os-specific/linux/systemd/0011-build-don-t-create-statedir-and-don-t-touch-prefixdi.patch @@ -1,17 +1,17 @@ -From 1928e1d8eda7d3e296170bb5bd813463cc3e679c Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Franz Pletz <fpletz@fnordicwalking.de> Date: Sun, 11 Feb 2018 04:37:44 +0100 -Subject: [PATCH 11/18] build: don't create statedir and don't touch prefixdir +Subject: [PATCH] build: don't create statedir and don't touch prefixdir --- meson.build | 3 --- 1 file changed, 3 deletions(-) diff --git a/meson.build b/meson.build -index 36cbfa4893..a10d6a3eb7 100644 +index 9c170acc0a..818b7a3eb5 100644 --- a/meson.build +++ b/meson.build -@@ -3926,9 +3926,6 @@ install_data('LICENSE.GPL2', +@@ -3928,9 +3928,6 @@ install_data('LICENSE.GPL2', install_subdir('LICENSES', install_dir : docdir) @@ -21,6 +21,3 @@ index 36cbfa4893..a10d6a3eb7 100644 ############################################################ # Ensure that changes to the docs/ directory do not break the --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/0012-add-rootprefix-to-lookup-dir-paths.patch b/pkgs/os-specific/linux/systemd/0012-add-rootprefix-to-lookup-dir-paths.patch index 86ebfa5d4b0..c1659ae8a78 100644 --- a/pkgs/os-specific/linux/systemd/0012-add-rootprefix-to-lookup-dir-paths.patch +++ b/pkgs/os-specific/linux/systemd/0012-add-rootprefix-to-lookup-dir-paths.patch @@ -1,7 +1,7 @@ -From 201b588b4b30fb53aefaed43e5d434373a076cb0 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Andreas Rammhold <andreas@rammhold.de> Date: Thu, 9 May 2019 11:15:22 +0200 -Subject: [PATCH 12/18] add rootprefix to lookup dir paths +Subject: [PATCH] add rootprefix to lookup dir paths systemd does not longer use the UDEVLIBEXEC directory as root for discovery default udev rules. By adding `$out/lib` to the lookup paths @@ -33,6 +33,3 @@ index 0a1ae023a3..cc00ff6c68 100644 #define CONF_PATHS(n) \ CONF_PATHS_USR(n) \ --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/0013-systemd-shutdown-execute-scripts-in-etc-systemd-syst.patch b/pkgs/os-specific/linux/systemd/0013-systemd-shutdown-execute-scripts-in-etc-systemd-syst.patch index 21cbde9a92d..4add87267dd 100644 --- a/pkgs/os-specific/linux/systemd/0013-systemd-shutdown-execute-scripts-in-etc-systemd-syst.patch +++ b/pkgs/os-specific/linux/systemd/0013-systemd-shutdown-execute-scripts-in-etc-systemd-syst.patch @@ -1,7 +1,7 @@ -From 67434c58caddf7dd3cef66dd3e3f704d39e4bcb0 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov <ab@fmap.me> Date: Thu, 25 Jul 2019 20:45:55 +0300 -Subject: [PATCH 13/18] systemd-shutdown: execute scripts in +Subject: [PATCH] systemd-shutdown: execute scripts in /etc/systemd/system-shutdown This is needed for NixOS to use such scripts as systemd directory is immutable. @@ -22,6 +22,3 @@ index 2c3cbec02c..1b876203c6 100644 /* The log target defaults to console, but the original systemd process will pass its log target in through a * command line argument, which will override this default. Also, ensure we'll never log to the journal or --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/0014-systemd-sleep-execute-scripts-in-etc-systemd-system-.patch b/pkgs/os-specific/linux/systemd/0014-systemd-sleep-execute-scripts-in-etc-systemd-system-.patch index 2d6f6aefbbb..22e2bc8e530 100644 --- a/pkgs/os-specific/linux/systemd/0014-systemd-sleep-execute-scripts-in-etc-systemd-system-.patch +++ b/pkgs/os-specific/linux/systemd/0014-systemd-sleep-execute-scripts-in-etc-systemd-system-.patch @@ -1,8 +1,7 @@ -From db1280d020e6d46a994240e755ce369d895322c5 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov <ab@fmap.me> Date: Thu, 25 Jul 2019 20:46:58 +0300 -Subject: [PATCH 14/18] systemd-sleep: execute scripts in - /etc/systemd/system-sleep +Subject: [PATCH] systemd-sleep: execute scripts in /etc/systemd/system-sleep This is needed for NixOS to use such scripts as systemd directory is immutable. --- @@ -21,6 +20,3 @@ index 65e391d02a..28af2f8bf5 100644 NULL }; --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/0015-kmod-static-nodes.service-Update-ConditionFileNotEmp.patch b/pkgs/os-specific/linux/systemd/0015-kmod-static-nodes.service-Update-ConditionFileNotEmp.patch deleted file mode 100644 index 9adeed284fb..00000000000 --- a/pkgs/os-specific/linux/systemd/0015-kmod-static-nodes.service-Update-ConditionFileNotEmp.patch +++ /dev/null @@ -1,27 +0,0 @@ -From ac9f97341e6fe3fb4b5fe22e72f43312ef5b1ca4 Mon Sep 17 00:00:00 2001 -From: Florian Klink <flokli@flokli.de> -Date: Sat, 7 Mar 2020 22:40:27 +0100 -Subject: [PATCH 15/18] kmod-static-nodes.service: Update ConditionFileNotEmpty - -On NixOS, kernel modules of the currently booted systems are located at -/run/booted-system/kernel-modules/lib/modules/%v/, not /lib/modules/%v/. ---- - units/kmod-static-nodes.service.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/units/kmod-static-nodes.service.in b/units/kmod-static-nodes.service.in -index 777e82d16b..b6abc2bba0 100644 ---- a/units/kmod-static-nodes.service.in -+++ b/units/kmod-static-nodes.service.in -@@ -12,7 +12,7 @@ Description=Create List of Static Device Nodes - DefaultDependencies=no - Before=sysinit.target systemd-tmpfiles-setup-dev.service - ConditionCapability=CAP_SYS_MODULE --ConditionFileNotEmpty=/lib/modules/%v/modules.devname -+ConditionFileNotEmpty=/run/booted-system/kernel-modules/lib/modules/%v/modules.devname - - [Service] - Type=oneshot --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/0016-path-util.h-add-placeholder-for-DEFAULT_PATH_NORMAL.patch b/pkgs/os-specific/linux/systemd/0015-path-util.h-add-placeholder-for-DEFAULT_PATH_NORMAL.patch index dc727586ce9..653f3beea96 100644 --- a/pkgs/os-specific/linux/systemd/0016-path-util.h-add-placeholder-for-DEFAULT_PATH_NORMAL.patch +++ b/pkgs/os-specific/linux/systemd/0015-path-util.h-add-placeholder-for-DEFAULT_PATH_NORMAL.patch @@ -1,7 +1,7 @@ -From 6f40d7a9d0029b5a805245b938ac62e7b150ea75 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Florian Klink <flokli@flokli.de> Date: Sun, 8 Mar 2020 01:05:54 +0100 -Subject: [PATCH 16/18] path-util.h: add placeholder for DEFAULT_PATH_NORMAL +Subject: [PATCH] path-util.h: add placeholder for DEFAULT_PATH_NORMAL This will be the $PATH used to lookup ExecStart= etc. options, which systemd itself uses extensively. @@ -28,6 +28,3 @@ index 553aa4fb58..46294f4bb1 100644 #if HAVE_SPLIT_USR # define DEFAULT_PATH DEFAULT_PATH_SPLIT_USR --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/0017-pkg-config-derive-prefix-from-prefix.patch b/pkgs/os-specific/linux/systemd/0016-pkg-config-derive-prefix-from-prefix.patch index 7ca62eb7506..3fbfd7f10ab 100644 --- a/pkgs/os-specific/linux/systemd/0017-pkg-config-derive-prefix-from-prefix.patch +++ b/pkgs/os-specific/linux/systemd/0016-pkg-config-derive-prefix-from-prefix.patch @@ -1,7 +1,7 @@ -From 8d9355264f11034a28ad78e4e70809908acfdb3e Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= <joerg@thalheim.io> Date: Sun, 6 Dec 2020 08:34:19 +0100 -Subject: [PATCH 17/18] pkg-config: derive prefix from --prefix +Subject: [PATCH] pkg-config: derive prefix from --prefix Point prefix to the one configured, instead of `/usr` `systemd` has limited support for making the pkgconfig prefix overridable, and interpolates those @@ -16,7 +16,7 @@ Co-Authored-By: Florian Klink <flokli@flokli.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in -index 162432e77f..2fc20daf03 100644 +index 5932a21b5b..20bf8e316d 100644 --- a/src/core/systemd.pc.in +++ b/src/core/systemd.pc.in @@ -11,7 +11,7 @@ @@ -28,6 +28,3 @@ index 162432e77f..2fc20daf03 100644 root_prefix={{ROOTPREFIX_NOSLASH}} rootprefix=${root_prefix} sysconf_dir={{SYSCONF_DIR}} --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/0018-inherit-systemd-environment-when-calling-generators.patch b/pkgs/os-specific/linux/systemd/0017-inherit-systemd-environment-when-calling-generators.patch index 06902cbad1b..f4925437aa5 100644 --- a/pkgs/os-specific/linux/systemd/0018-inherit-systemd-environment-when-calling-generators.patch +++ b/pkgs/os-specific/linux/systemd/0017-inherit-systemd-environment-when-calling-generators.patch @@ -1,7 +1,7 @@ -From 291ead07daab980fa39fd18512c8266c23161540 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Yuriy Taraday <yorik.sar@gmail.com> Date: Fri, 17 Jun 2022 12:45:10 +0000 -Subject: [PATCH 18/18] inherit systemd environment when calling generators. +Subject: [PATCH] inherit systemd environment when calling generators. Systemd generators need access to the environment configured in stage-2-init.sh since it schedules fsck and mkfs executions based on @@ -37,6 +37,3 @@ index 71ef7f27b4..33ded94a7c 100644 r = strv_env_assign(&nl, "SYSTEMD_SCOPE", MANAGER_IS_SYSTEM(m) ? "system" : "user"); if (r < 0) --- -2.36.1 - diff --git a/pkgs/os-specific/linux/systemd/default.nix b/pkgs/os-specific/linux/systemd/default.nix index dcc7b9df188..348f0e11342 100644 --- a/pkgs/os-specific/linux/systemd/default.nix +++ b/pkgs/os-specific/linux/systemd/default.nix @@ -149,7 +149,8 @@ stdenv.mkDerivation { # On major changes, or when otherwise required, you *must* reformat the patches, # `git am path/to/00*.patch` them into a systemd worktree, rebase to the more recent - # systemd version, and export the patches again via `git -c format.signoff=false format-patch v${version}`. + # systemd version, and export the patches again via + # `git -c format.signoff=false format-patch v${version} --no-numbered --zero-commit --no-signature`. # Use `find . -name "*.patch" | sort` to get an up-to-date listing of all patches patches = [ ./0001-Start-device-units-for-uninitialised-encrypted-devic.patch @@ -166,10 +167,9 @@ stdenv.mkDerivation { ./0012-add-rootprefix-to-lookup-dir-paths.patch ./0013-systemd-shutdown-execute-scripts-in-etc-systemd-syst.patch ./0014-systemd-sleep-execute-scripts-in-etc-systemd-system-.patch - ./0015-kmod-static-nodes.service-Update-ConditionFileNotEmp.patch - ./0016-path-util.h-add-placeholder-for-DEFAULT_PATH_NORMAL.patch - ./0017-pkg-config-derive-prefix-from-prefix.patch - ./0018-inherit-systemd-environment-when-calling-generators.patch + ./0015-path-util.h-add-placeholder-for-DEFAULT_PATH_NORMAL.patch + ./0016-pkg-config-derive-prefix-from-prefix.patch + ./0017-inherit-systemd-environment-when-calling-generators.patch ] ++ lib.optional stdenv.hostPlatform.isMusl ( let oe-core = fetchzip { diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index de8d13160f9..0ba8d101823 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -771,9 +771,18 @@ substitute() { } substituteInPlace() { - local fileName="$1" - shift - substitute "$fileName" "$fileName" "$@" + local -a fileNames=() + for arg in "$@"; do + if [[ "$arg" = "--"* ]]; then + break + fi + fileNames+=("$arg") + shift + done + + for file in "${fileNames[@]}"; do + substitute "$file" "$file" "$@" + done } _allFlags() { diff --git a/pkgs/tools/audio/nanotts/default.nix b/pkgs/tools/audio/nanotts/default.nix index d05fdf6c52c..85f786d2081 100644 --- a/pkgs/tools/audio/nanotts/default.nix +++ b/pkgs/tools/audio/nanotts/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, autoconf, automake, libtool, popt, alsaLib }: +{ lib, stdenv, fetchFromGitHub, autoconf, automake, libtool, popt, alsa-lib }: stdenv.mkDerivation { pname = "nano-tts"; @@ -13,7 +13,7 @@ stdenv.mkDerivation { strictDeps = true; nativeBuildInputs = [ autoconf automake libtool ]; - buildInputs = [ popt alsaLib ]; + buildInputs = [ popt alsa-lib ]; patchPhase = '' substituteInPlace "src/main.cpp" --replace "/usr/share/pico/lang" "$out/share/lang" diff --git a/pkgs/tools/filesystems/ntfs-3g/default.nix b/pkgs/tools/filesystems/ntfs-3g/default.nix index fe0ae20f557..018621b8019 100644 --- a/pkgs/tools/filesystems/ntfs-3g/default.nix +++ b/pkgs/tools/filesystems/ntfs-3g/default.nix @@ -40,6 +40,7 @@ stdenv.mkDerivation rec { "--enable-extras" "--with-mount-helper=${mount}/bin/mount" "--with-umount-helper=${mount}/bin/umount" + ] ++ lib.optionals stdenv.isLinux [ "--with-modprobe-helper=${kmod}/bin/modprobe" ]; diff --git a/pkgs/tools/system/pciutils/default.nix b/pkgs/tools/system/pciutils/default.nix index 31532167181..b7cfde58070 100644 --- a/pkgs/tools/system/pciutils/default.nix +++ b/pkgs/tools/system/pciutils/default.nix @@ -14,10 +14,11 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ pkg-config ]; - buildInputs = [ zlib kmod which ] ++ - lib.optional stdenv.hostPlatform.isDarwin IOKit; + buildInputs = [ which zlib ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ IOKit ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ kmod ]; - preConfigure = if stdenv.cc.isGNU then null else '' + preConfigure = lib.optionalString (!stdenv.cc.isGNU) '' substituteInPlace Makefile --replace 'CC=$(CROSS_COMPILE)gcc' "" ''; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f4c4b573970..536319c0da1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2609,44 +2609,15 @@ with pkgs; go-audit = callPackage ../tools/system/go-audit { }; - gopass = callPackage ../tools/security/gopass { - buildGoModule = __buildGo118ModuleCL417615; - }; - - gopass-hibp = callPackage ../tools/security/gopass/hibp.nix { - buildGoModule = __buildGo118ModuleCL417615; - }; + gopass = callPackage ../tools/security/gopass { }; - gopass-jsonapi = callPackage ../tools/security/gopass/jsonapi.nix { - buildGoModule = __buildGo118ModuleCL417615; - }; + gopass-hibp = callPackage ../tools/security/gopass/hibp.nix { }; - git-credential-gopass = callPackage ../tools/security/gopass/git-credential.nix { - buildGoModule = __buildGo118ModuleCL417615; - }; + gopass-jsonapi = callPackage ../tools/security/gopass/jsonapi.nix { }; - gopass-summon-provider = callPackage ../tools/security/gopass/summon.nix { - buildGoModule = __buildGo118ModuleCL417615; - }; + git-credential-gopass = callPackage ../tools/security/gopass/git-credential.nix { }; - # custom override for go 1.18 including the revert of CL411617, CL417615. - # Can be dropped if/once go 1.18.5 is released with CL417615. - # or when staging go 1.18.4 includes the revert. - __buildGo118ModuleCL417615 = let - fetchBase64Patch = args: (fetchpatch args).overrideAttrs (o: { - postFetch = "mv $out p; base64 -d p > $out; " + o.postFetch; - }); - in darwin.apple_sdk_11_0.callPackage ../development/go-modules/generic { - go = buildPackages.go_1_18.overrideAttrs (oldAttrs: rec { - patches = oldAttrs.patches or [] ++ [ - # https://go-review.googlesource.com/c/go/+/417615/ - (fetchBase64Patch { - url = "https://go-review.googlesource.com/changes/go~417615/revisions/3/patch"; - sha256 = "sha256-Gu5eZUwGGch7et75A/BNynbs4VlQUBClVUxjxPkdjOs="; - }) - ]; - }); - }; + gopass-summon-provider = callPackage ../tools/security/gopass/summon.nix { }; gosh = callPackage ../tools/security/gosh { }; @@ -13048,9 +13019,9 @@ with pkgs; clangMultiStdenv = overrideCC stdenv buildPackages.clang_multi; multiStdenv = if stdenv.cc.isClang then clangMultiStdenv else gccMultiStdenv; - gcc_debug = lowPrio (wrapCC (gcc.cc.override { - stripped = false; - })); + gcc_debug = lowPrio (wrapCC (gcc.cc.overrideAttrs (_: { + dontStrip = true; + }))); gccCrossLibcStdenv = overrideCC stdenv buildPackages.gccCrossStageStatic; @@ -27422,6 +27393,7 @@ with pkgs; gitMinimal = git.override { withManual = false; pythonSupport = false; + perlSupport = false; withpcre2 = false; }; diff --git a/pkgs/top-level/darwin-packages.nix b/pkgs/top-level/darwin-packages.nix index 27023a991c9..8c1e2595250 100644 --- a/pkgs/top-level/darwin-packages.nix +++ b/pkgs/top-level/darwin-packages.nix @@ -120,8 +120,10 @@ impure-cmds // appleSourcePackages // chooseLibs // { executable = true; text = '' - CODESIGN_ALLOCATE=${targetPrefix}codesign_allocate \ - ${self.sigtool}/bin/codesign -f -s - "$linkerOutput" + if [ "$linkerOutput" != "/dev/null" ]; then + CODESIGN_ALLOCATE=${targetPrefix}codesign_allocate \ + ${self.sigtool}/bin/codesign -f -s - "$linkerOutput" + fi ''; }; diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index b6d982a1503..f16bce06cea 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -13030,12 +13030,12 @@ let LWP = buildPerlPackage { pname = "libwww-perl"; - version = "6.49"; + version = "6.67"; src = fetchurl { - url = "mirror://cpan/authors/id/O/OA/OALDERS/libwww-perl-6.49.tar.gz"; - sha256 = "19k0cg4j4qz005a4ngy48z4r8dc99dxlpq8kvj7qnk15mvgd1r63"; + url = "mirror://cpan/authors/id/O/OA/OALDERS/libwww-perl-6.67.tar.gz"; + sha256 = "sha256-lu7ECj/QqhvYNBF75eshxDj3MJTYYaGn5XdPCxImtyM="; }; - propagatedBuildInputs = [ FileListing HTMLParser HTTPCookies HTTPDaemon HTTPNegotiate NetHTTP TryTiny WWWRobotRules ]; + propagatedBuildInputs = [ FileListing HTMLParser HTTPCookies HTTPNegotiate NetHTTP TryTiny WWWRobotRules ]; # support cross-compilation by avoiding using `has_module` which does not work in miniperl (it requires B native module) postPatch = lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' substituteInPlace Makefile.PL --replace 'if has_module' 'if 0; #' @@ -13045,7 +13045,7 @@ let description = "The World-Wide Web library for Perl"; license = with licenses; [ artistic1 gpl1Plus ]; }; - buildInputs = [ TestFatal TestNeeds TestRequiresInternet ]; + checkInputs = [ HTTPDaemon TestFatal TestNeeds TestRequiresInternet ]; }; LWPAuthenOAuth = buildPerlPackage { @@ -20028,6 +20028,7 @@ let license = with lib.licenses; [ artistic1 gpl1Plus ]; }; buildInputs = [ TestWarn XMLParserLite ]; + checkInputs = [ HTTPDaemon ]; }; Socket6 = buildPerlPackage { @@ -24473,6 +24474,7 @@ let IPCShareLite JSON LWP + HTTPDaemon pkgs.cairo pkgs.mapnik pkgs.zlib |