Merge branch 'staging' into staging-next
A few conflicts but relatively clear ones (I think).
This commit is contained in:
commit
d2eb7a7887
|
@ -123,7 +123,7 @@ depsBuildBuild = [ buildPackages.stdenv.cc ];
|
||||||
|
|
||||||
Add the following to your `mkDerivation` invocation.
|
Add the following to your `mkDerivation` invocation.
|
||||||
```nix
|
```nix
|
||||||
doCheck = stdenv.hostPlatform == stdenv.buildPlatfrom;
|
doCheck = stdenv.hostPlatform == stdenv.buildPlatform;
|
||||||
```
|
```
|
||||||
|
|
||||||
## Cross-building packages {#sec-cross-usage}
|
## Cross-building packages {#sec-cross-usage}
|
||||||
|
|
|
@ -125,6 +125,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) ({
|
||||||
fullName = ''BSD 4-clause "Original" or "Old" License'';
|
fullName = ''BSD 4-clause "Original" or "Old" License'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bsdOriginalUC = spdx {
|
||||||
|
spdxId = "BSD-4-Clause-UC";
|
||||||
|
fullName = "BSD 4-Clause University of California-Specific";
|
||||||
|
};
|
||||||
|
|
||||||
bsdProtection = spdx {
|
bsdProtection = spdx {
|
||||||
spdxId = "BSD-Protection";
|
spdxId = "BSD-Protection";
|
||||||
fullName = "BSD Protection License";
|
fullName = "BSD Protection License";
|
||||||
|
|
|
@ -112,6 +112,19 @@ rec {
|
||||||
aarch64 = "arm64";
|
aarch64 = "arm64";
|
||||||
}.${final.parsed.cpu.name} or final.parsed.cpu.name;
|
}.${final.parsed.cpu.name} or final.parsed.cpu.name;
|
||||||
|
|
||||||
|
darwinPlatform =
|
||||||
|
if final.isMacOS then "macos"
|
||||||
|
else if final.isiOS then "ios"
|
||||||
|
else null;
|
||||||
|
# The canonical name for this attribute is darwinSdkVersion, but some
|
||||||
|
# platforms define the old name "sdkVer".
|
||||||
|
darwinSdkVersion = final.sdkVer or "10.12";
|
||||||
|
darwinMinVersion = final.darwinSdkVersion;
|
||||||
|
darwinMinVersionVariable =
|
||||||
|
if final.isMacOS then "MACOSX_DEPLOYMENT_TARGET"
|
||||||
|
else if final.isiOS then "IPHONEOS_DEPLOYMENT_TARGET"
|
||||||
|
else null;
|
||||||
|
|
||||||
emulator = pkgs: let
|
emulator = pkgs: let
|
||||||
qemu-user = pkgs.qemu.override {
|
qemu-user = pkgs.qemu.override {
|
||||||
smartcardSupport = false;
|
smartcardSupport = false;
|
||||||
|
|
|
@ -217,6 +217,7 @@ rec {
|
||||||
sdkVer = "14.3";
|
sdkVer = "14.3";
|
||||||
xcodeVer = "12.3";
|
xcodeVer = "12.3";
|
||||||
xcodePlatform = "iPhoneSimulator";
|
xcodePlatform = "iPhoneSimulator";
|
||||||
|
darwinPlatform = "ios-simulator";
|
||||||
useiOSPrebuilt = true;
|
useiOSPrebuilt = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -226,6 +227,7 @@ rec {
|
||||||
sdkVer = "14.3";
|
sdkVer = "14.3";
|
||||||
xcodeVer = "12.3";
|
xcodeVer = "12.3";
|
||||||
xcodePlatform = "iPhoneSimulator";
|
xcodePlatform = "iPhoneSimulator";
|
||||||
|
darwinPlatform = "ios-simulator";
|
||||||
useiOSPrebuilt = true;
|
useiOSPrebuilt = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -697,6 +697,9 @@
|
||||||
./services/networking/iodine.nix
|
./services/networking/iodine.nix
|
||||||
./services/networking/iperf3.nix
|
./services/networking/iperf3.nix
|
||||||
./services/networking/ircd-hybrid/default.nix
|
./services/networking/ircd-hybrid/default.nix
|
||||||
|
./services/networking/iscsi/initiator.nix
|
||||||
|
./services/networking/iscsi/root-initiator.nix
|
||||||
|
./services/networking/iscsi/target.nix
|
||||||
./services/networking/iwd.nix
|
./services/networking/iwd.nix
|
||||||
./services/networking/jicofo.nix
|
./services/networking/jicofo.nix
|
||||||
./services/networking/jitsi-videobridge.nix
|
./services/networking/jitsi-videobridge.nix
|
||||||
|
|
|
@ -10,13 +10,12 @@ let
|
||||||
paths = map (p: "${p}/pcsc/drivers") config.services.pcscd.plugins;
|
paths = map (p: "${p}/pcsc/drivers") config.services.pcscd.plugins;
|
||||||
};
|
};
|
||||||
|
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
|
|
||||||
###### interface
|
###### interface
|
||||||
|
|
||||||
options = {
|
options.services.pcscd = {
|
||||||
|
|
||||||
services.pcscd = {
|
|
||||||
enable = mkEnableOption "PCSC-Lite daemon";
|
enable = mkEnableOption "PCSC-Lite daemon";
|
||||||
|
|
||||||
plugins = mkOption {
|
plugins = mkOption {
|
||||||
|
@ -44,26 +43,20 @@ in {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
###### implementation
|
###### implementation
|
||||||
|
|
||||||
config = mkIf config.services.pcscd.enable {
|
config = mkIf config.services.pcscd.enable {
|
||||||
|
|
||||||
systemd.sockets.pcscd = {
|
environment.etc."reader.conf".source = cfgFile;
|
||||||
description = "PCSC-Lite Socket";
|
|
||||||
wantedBy = [ "sockets.target" ];
|
systemd.packages = [ (getBin pkgs.pcsclite) ];
|
||||||
before = [ "multi-user.target" ];
|
|
||||||
socketConfig.ListenStream = "/run/pcscd/pcscd.comm";
|
systemd.sockets.pcscd.wantedBy = [ "sockets.target" ];
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.pcscd = {
|
systemd.services.pcscd = {
|
||||||
description = "PCSC-Lite daemon";
|
|
||||||
environment.PCSCLITE_HP_DROPDIR = pluginEnv;
|
environment.PCSCLITE_HP_DROPDIR = pluginEnv;
|
||||||
serviceConfig = {
|
restartTriggers = [ "/etc/reader.conf" ];
|
||||||
ExecStart = "${getBin pkgs.pcsclite}/sbin/pcscd -f -x -c ${cfgFile}";
|
|
||||||
ExecReload = "${getBin pkgs.pcsclite}/sbin/pcscd -H";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
{ config, lib, pkgs, ... }: with lib;
|
||||||
|
let
|
||||||
|
cfg = config.services.openiscsi;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.services.openiscsi = with types; {
|
||||||
|
enable = mkEnableOption "the openiscsi iscsi daemon";
|
||||||
|
enableAutoLoginOut = mkEnableOption ''
|
||||||
|
automatic login and logout of all automatic targets.
|
||||||
|
You probably do not want this.
|
||||||
|
'';
|
||||||
|
discoverPortal = mkOption {
|
||||||
|
type = nullOr str;
|
||||||
|
default = null;
|
||||||
|
description = "Portal to discover targets on";
|
||||||
|
};
|
||||||
|
name = mkOption {
|
||||||
|
type = str;
|
||||||
|
description = "Name of this iscsi initiator";
|
||||||
|
example = "iqn.2020-08.org.linux-iscsi.initiatorhost:example";
|
||||||
|
};
|
||||||
|
package = mkOption {
|
||||||
|
type = package;
|
||||||
|
description = "openiscsi package to use";
|
||||||
|
default = pkgs.openiscsi;
|
||||||
|
defaultText = "pkgs.openiscsi";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = str;
|
||||||
|
default = "";
|
||||||
|
description = "Lines to append to default iscsid.conf";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfigFile = mkOption {
|
||||||
|
description = ''
|
||||||
|
Append an additional file's contents to /etc/iscsid.conf. Use a non-store path
|
||||||
|
and store passwords in this file.
|
||||||
|
'';
|
||||||
|
default = null;
|
||||||
|
type = nullOr str;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
environment.etc."iscsi/iscsid.conf.fragment".source = pkgs.runCommand "iscsid.conf" {} ''
|
||||||
|
cat "${cfg.package}/etc/iscsi/iscsid.conf" > $out
|
||||||
|
cat << 'EOF' >> $out
|
||||||
|
${cfg.extraConfig}
|
||||||
|
${optionalString cfg.enableAutoLoginOut "node.startup = automatic"}
|
||||||
|
EOF
|
||||||
|
'';
|
||||||
|
environment.etc."iscsi/initiatorname.iscsi".text = "InitiatorName=${cfg.name}";
|
||||||
|
|
||||||
|
system.activationScripts.iscsid = let
|
||||||
|
extraCfgDumper = optionalString (cfg.extraConfigFile != null) ''
|
||||||
|
if [ -f "${cfg.extraConfigFile}" ]; then
|
||||||
|
printf "\n# The following is from ${cfg.extraConfigFile}:\n"
|
||||||
|
cat "${cfg.extraConfigFile}"
|
||||||
|
else
|
||||||
|
echo "Warning: services.openiscsi.extraConfigFile ${cfg.extraConfigFile} does not exist!" >&2
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
in ''
|
||||||
|
(
|
||||||
|
cat ${config.environment.etc."iscsi/iscsid.conf.fragment".source}
|
||||||
|
${extraCfgDumper}
|
||||||
|
) > /etc/iscsi/iscsid.conf
|
||||||
|
'';
|
||||||
|
|
||||||
|
systemd.packages = [ cfg.package ];
|
||||||
|
|
||||||
|
systemd.services."iscsid".wantedBy = [ "multi-user.target" ];
|
||||||
|
systemd.sockets."iscsid".wantedBy = [ "sockets.target" ];
|
||||||
|
|
||||||
|
systemd.services."iscsi" = mkIf cfg.enableAutoLoginOut {
|
||||||
|
wantedBy = [ "remote-fs.target" ];
|
||||||
|
serviceConfig.ExecStartPre = mkIf (cfg.discoverPortal != null) "${cfg.package}/bin/iscsiadm --mode discoverydb --type sendtargets --portal ${escapeShellArg cfg.discoverPortal} --discover";
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [ cfg.package ];
|
||||||
|
boot.kernelModules = [ "iscsi_tcp" ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,181 @@
|
||||||
|
{ config, lib, pkgs, ... }: with lib;
|
||||||
|
let
|
||||||
|
cfg = config.boot.iscsi-initiator;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# If you're booting entirely off another machine you may want to add
|
||||||
|
# this snippet to always boot the latest "system" version. It is not
|
||||||
|
# enabled by default in case you have an initrd on a local disk:
|
||||||
|
#
|
||||||
|
# boot.initrd.postMountCommands = ''
|
||||||
|
# ln -sfn /nix/var/nix/profiles/system/init /mnt-root/init
|
||||||
|
# stage2Init=/init
|
||||||
|
# '';
|
||||||
|
#
|
||||||
|
# Note: Theoretically you might want to connect to multiple portals and
|
||||||
|
# log in to multiple targets, however the authors of this module so far
|
||||||
|
# don't have the need or expertise to reasonably implement it. Also,
|
||||||
|
# consider carefully before making your boot chain depend on multiple
|
||||||
|
# machines to be up.
|
||||||
|
options.boot.iscsi-initiator = with types; {
|
||||||
|
name = mkOption {
|
||||||
|
description = ''
|
||||||
|
Name of the iSCSI initiator to boot from. Note, booting from iscsi
|
||||||
|
requires networkd based networking.
|
||||||
|
'';
|
||||||
|
default = null;
|
||||||
|
example = "iqn.2020-08.org.linux-iscsi.initiatorhost:example";
|
||||||
|
type = nullOr str;
|
||||||
|
};
|
||||||
|
|
||||||
|
discoverPortal = mkOption {
|
||||||
|
description = ''
|
||||||
|
iSCSI portal to boot from.
|
||||||
|
'';
|
||||||
|
default = null;
|
||||||
|
example = "192.168.1.1:3260";
|
||||||
|
type = nullOr str;
|
||||||
|
};
|
||||||
|
|
||||||
|
target = mkOption {
|
||||||
|
description = ''
|
||||||
|
Name of the iSCSI target to boot from.
|
||||||
|
'';
|
||||||
|
default = null;
|
||||||
|
example = "iqn.2020-08.org.linux-iscsi.targethost:example";
|
||||||
|
type = nullOr str;
|
||||||
|
};
|
||||||
|
|
||||||
|
logLevel = mkOption {
|
||||||
|
description = ''
|
||||||
|
Higher numbers elicits more logs.
|
||||||
|
'';
|
||||||
|
default = 1;
|
||||||
|
example = 8;
|
||||||
|
type = int;
|
||||||
|
};
|
||||||
|
|
||||||
|
loginAll = mkOption {
|
||||||
|
description = ''
|
||||||
|
Do not log into a specific target on the portal, but to all that we discover.
|
||||||
|
This overrides setting target.
|
||||||
|
'';
|
||||||
|
type = bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
description = "Extra lines to append to /etc/iscsid.conf";
|
||||||
|
default = null;
|
||||||
|
type = nullOr lines;
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfigFile = mkOption {
|
||||||
|
description = ''
|
||||||
|
Append an additional file's contents to `/etc/iscsid.conf`. Use a non-store path
|
||||||
|
and store passwords in this file. Note: the file specified here must be available
|
||||||
|
in the initrd, see: `boot.initrd.secrets`.
|
||||||
|
'';
|
||||||
|
default = null;
|
||||||
|
type = nullOr str;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf (cfg.name != null) {
|
||||||
|
# The "scripted" networking configuration (ie: non-networkd)
|
||||||
|
# doesn't properly order the start and stop of the interfaces, and the
|
||||||
|
# network interfaces are torn down before unmounting disks. Since this
|
||||||
|
# module is specifically for very-early-boot network mounts, we need
|
||||||
|
# the network to stay on.
|
||||||
|
#
|
||||||
|
# We could probably fix the scripted options to properly order, but I'm
|
||||||
|
# not inclined to invest that time today. Hopefully this gets users far
|
||||||
|
# enough along and they can just use networkd.
|
||||||
|
networking.useNetworkd = true;
|
||||||
|
networking.useDHCP = false; # Required to set useNetworkd = true
|
||||||
|
|
||||||
|
boot.initrd = {
|
||||||
|
network.enable = true;
|
||||||
|
|
||||||
|
# By default, the stage-1 disables the network and resets the interfaces
|
||||||
|
# on startup. Since our startup disks are on the network, we can't let
|
||||||
|
# the network not work.
|
||||||
|
network.flushBeforeStage2 = false;
|
||||||
|
|
||||||
|
kernelModules = [ "iscsi_tcp" ];
|
||||||
|
|
||||||
|
extraUtilsCommands = ''
|
||||||
|
copy_bin_and_libs ${pkgs.openiscsi}/bin/iscsid
|
||||||
|
copy_bin_and_libs ${pkgs.openiscsi}/bin/iscsiadm
|
||||||
|
${optionalString (!config.boot.initrd.network.ssh.enable) "cp -pv ${pkgs.glibc.out}/lib/libnss_files.so.* $out/lib"}
|
||||||
|
|
||||||
|
mkdir -p $out/etc/iscsi
|
||||||
|
cp ${config.environment.etc.hosts.source} $out/etc/hosts
|
||||||
|
cp ${pkgs.openiscsi}/etc/iscsi/iscsid.conf $out/etc/iscsi/iscsid.fragment.conf
|
||||||
|
chmod +w $out/etc/iscsi/iscsid.fragment.conf
|
||||||
|
cat << 'EOF' >> $out/etc/iscsi/iscsid.fragment.conf
|
||||||
|
${optionalString (cfg.extraConfig != null) cfg.extraConfig}
|
||||||
|
EOF
|
||||||
|
'';
|
||||||
|
|
||||||
|
extraUtilsCommandsTest = ''
|
||||||
|
$out/bin/iscsiadm --version
|
||||||
|
'';
|
||||||
|
|
||||||
|
preLVMCommands = let
|
||||||
|
extraCfgDumper = optionalString (cfg.extraConfigFile != null) ''
|
||||||
|
if [ -f "${cfg.extraConfigFile}" ]; then
|
||||||
|
printf "\n# The following is from ${cfg.extraConfigFile}:\n"
|
||||||
|
cat "${cfg.extraConfigFile}"
|
||||||
|
else
|
||||||
|
echo "Warning: boot.iscsi-initiator.extraConfigFile ${cfg.extraConfigFile} does not exist!" >&2
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
in ''
|
||||||
|
${optionalString (!config.boot.initrd.network.ssh.enable) ''
|
||||||
|
# stolen from initrd-ssh.nix
|
||||||
|
echo 'root:x:0:0:root:/root:/bin/ash' > /etc/passwd
|
||||||
|
echo 'passwd: files' > /etc/nsswitch.conf
|
||||||
|
''}
|
||||||
|
|
||||||
|
cp -f $extraUtils/etc/hosts /etc/hosts
|
||||||
|
|
||||||
|
mkdir -p /etc/iscsi /run/lock/iscsi
|
||||||
|
echo "InitiatorName=${cfg.name}" > /etc/iscsi/initiatorname.iscsi
|
||||||
|
|
||||||
|
(
|
||||||
|
cat "$extraUtils/etc/iscsi/iscsid.fragment.conf"
|
||||||
|
printf "\n"
|
||||||
|
${optionalString cfg.loginAll ''echo "node.startup = automatic"''}
|
||||||
|
${extraCfgDumper}
|
||||||
|
) > /etc/iscsi/iscsid.conf
|
||||||
|
|
||||||
|
iscsid --foreground --no-pid-file --debug ${toString cfg.logLevel} &
|
||||||
|
iscsiadm --mode discoverydb \
|
||||||
|
--type sendtargets \
|
||||||
|
--discover \
|
||||||
|
--portal ${escapeShellArg cfg.discoverPortal} \
|
||||||
|
--debug ${toString cfg.logLevel}
|
||||||
|
|
||||||
|
${if cfg.loginAll then ''
|
||||||
|
iscsiadm --mode node --loginall all
|
||||||
|
'' else ''
|
||||||
|
iscsiadm --mode node --targetname ${escapeShellArg cfg.target} --login
|
||||||
|
''}
|
||||||
|
pkill -9 iscsid
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.openiscsi = {
|
||||||
|
enable = true;
|
||||||
|
inherit (cfg) name;
|
||||||
|
};
|
||||||
|
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
assertion = cfg.loginAll -> cfg.target == null;
|
||||||
|
message = "iSCSI target name is set while login on all portals is enabled.";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.target;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
###### interface
|
||||||
|
options = {
|
||||||
|
services.target = with types; {
|
||||||
|
enable = mkEnableOption "the kernel's LIO iscsi target";
|
||||||
|
|
||||||
|
config = mkOption {
|
||||||
|
type = attrs;
|
||||||
|
default = {};
|
||||||
|
description = ''
|
||||||
|
Content of /etc/target/saveconfig.json
|
||||||
|
This file is normally read and written by targetcli
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
###### implementation
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
environment.etc."target/saveconfig.json" = {
|
||||||
|
text = builtins.toJSON cfg.config;
|
||||||
|
mode = "0600";
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [ targetcli ];
|
||||||
|
|
||||||
|
boot.kernelModules = [ "configfs" "target_core_mod" "iscsi_target_mod" ];
|
||||||
|
|
||||||
|
systemd.services.iscsi-target = {
|
||||||
|
enable = true;
|
||||||
|
after = [ "network.target" "local-fs.target" ];
|
||||||
|
requires = [ "sys-kernel-config.mount" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = "${pkgs.python3.pkgs.rtslib}/bin/targetctl restore";
|
||||||
|
ExecStop = "${pkgs.python3.pkgs.rtslib}/bin/targetctl clear";
|
||||||
|
RemainAfterExit = "yes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d /etc/target 0700 root root - -"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
|
@ -161,9 +161,6 @@ in
|
||||||
|
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages = [ cfg.package ];
|
||||||
|
|
||||||
# Make sure Domain 0 gets the required configuration
|
|
||||||
#boot.kernelPackages = pkgs.boot.kernelPackages.override { features={xen_dom0=true;}; };
|
|
||||||
|
|
||||||
boot.kernelModules =
|
boot.kernelModules =
|
||||||
[ "xen-evtchn" "xen-gntdev" "xen-gntalloc" "xen-blkback" "xen-netback"
|
[ "xen-evtchn" "xen-gntdev" "xen-gntalloc" "xen-blkback" "xen-netback"
|
||||||
"xen-pciback" "evtchn" "gntdev" "netbk" "blkbk" "xen-scsibk"
|
"xen-pciback" "evtchn" "gntdev" "netbk" "blkbk" "xen-scsibk"
|
||||||
|
|
|
@ -185,6 +185,7 @@ in
|
||||||
iodine = handleTest ./iodine.nix {};
|
iodine = handleTest ./iodine.nix {};
|
||||||
ipfs = handleTest ./ipfs.nix {};
|
ipfs = handleTest ./ipfs.nix {};
|
||||||
ipv6 = handleTest ./ipv6.nix {};
|
ipv6 = handleTest ./ipv6.nix {};
|
||||||
|
iscsi-root = handleTest ./iscsi-root.nix {};
|
||||||
jackett = handleTest ./jackett.nix {};
|
jackett = handleTest ./jackett.nix {};
|
||||||
jellyfin = handleTest ./jellyfin.nix {};
|
jellyfin = handleTest ./jellyfin.nix {};
|
||||||
jenkins = handleTest ./jenkins.nix {};
|
jenkins = handleTest ./jenkins.nix {};
|
||||||
|
|
|
@ -0,0 +1,161 @@
|
||||||
|
import ./make-test-python.nix (
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
let
|
||||||
|
initiatorName = "iqn.2020-08.org.linux-iscsi.initiatorhost:example";
|
||||||
|
targetName = "iqn.2003-01.org.linux-iscsi.target.x8664:sn.acf8fd9c23af";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
name = "iscsi";
|
||||||
|
meta = {
|
||||||
|
maintainers = pkgs.lib.teams.deshaw.members
|
||||||
|
++ (with pkgs.lib.maintainers; [ ajs124 ]);
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
target = { config, pkgs, lib, ... }: {
|
||||||
|
services.target = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
fabric_modules = [];
|
||||||
|
storage_objects = [
|
||||||
|
{
|
||||||
|
dev = "/dev/vdb";
|
||||||
|
name = "test";
|
||||||
|
plugin = "block";
|
||||||
|
write_back = true;
|
||||||
|
wwn = "92b17c3f-6b40-4168-b082-ceeb7b495522";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
targets = [
|
||||||
|
{
|
||||||
|
fabric = "iscsi";
|
||||||
|
tpgs = [
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
attributes = {
|
||||||
|
authentication = 0;
|
||||||
|
generate_node_acls = 1;
|
||||||
|
};
|
||||||
|
luns = [
|
||||||
|
{
|
||||||
|
alias = "94dfe06967";
|
||||||
|
alua_tg_pt_gp_name = "default_tg_pt_gp";
|
||||||
|
index = 0;
|
||||||
|
storage_object = "/backstores/block/test";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
node_acls = [
|
||||||
|
{
|
||||||
|
mapped_luns = [
|
||||||
|
{
|
||||||
|
alias = "d42f5bdf8a";
|
||||||
|
index = 0;
|
||||||
|
tpg_lun = 0;
|
||||||
|
write_protect = false;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
node_wwn = initiatorName;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
portals = [
|
||||||
|
{
|
||||||
|
ip_address = "0.0.0.0";
|
||||||
|
iser = false;
|
||||||
|
offload = false;
|
||||||
|
port = 3260;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
tag = 1;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
wwn = targetName;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 3260 ];
|
||||||
|
networking.firewall.allowedUDPPorts = [ 3260 ];
|
||||||
|
|
||||||
|
virtualisation.memorySize = 2048;
|
||||||
|
virtualisation.emptyDiskImages = [ 2048 ];
|
||||||
|
};
|
||||||
|
|
||||||
|
initiatorAuto = { nodes, config, pkgs, ... }: {
|
||||||
|
services.openiscsi = {
|
||||||
|
enable = true;
|
||||||
|
enableAutoLoginOut = true;
|
||||||
|
discoverPortal = "target";
|
||||||
|
name = initiatorName;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
xfsprogs
|
||||||
|
];
|
||||||
|
|
||||||
|
system.extraDependencies = [ nodes.initiatorRootDisk.config.system.build.toplevel ];
|
||||||
|
|
||||||
|
nix.binaryCaches = lib.mkForce [];
|
||||||
|
nix.extraOptions = ''
|
||||||
|
hashed-mirrors =
|
||||||
|
connect-timeout = 1
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
initiatorRootDisk = { config, pkgs, modulesPath, lib, ... }: {
|
||||||
|
boot.loader.grub.enable = false;
|
||||||
|
boot.kernelParams = lib.mkOverride 5 (
|
||||||
|
[
|
||||||
|
"boot.shell_on_fail"
|
||||||
|
"console=tty1"
|
||||||
|
"ip=${config.networking.primaryIPAddress}:::255.255.255.0::ens9:none"
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
# defaults to true, puts some code in the initrd that tries to mount an overlayfs on /nix/store
|
||||||
|
virtualisation.writableStore = false;
|
||||||
|
|
||||||
|
fileSystems = lib.mkOverride 5 {
|
||||||
|
"/" = {
|
||||||
|
fsType = "xfs";
|
||||||
|
device = "/dev/sda";
|
||||||
|
options = [ "_netdev" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.iscsi-initiator = {
|
||||||
|
discoverPortal = "target";
|
||||||
|
name = initiatorName;
|
||||||
|
target = targetName;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = { nodes, ... }: ''
|
||||||
|
target.start()
|
||||||
|
target.wait_for_unit("iscsi-target.service")
|
||||||
|
|
||||||
|
initiatorAuto.start()
|
||||||
|
|
||||||
|
initiatorAuto.wait_for_unit("iscsid.service")
|
||||||
|
initiatorAuto.wait_for_unit("iscsi.service")
|
||||||
|
initiatorAuto.get_unit_info("iscsi")
|
||||||
|
|
||||||
|
initiatorAuto.succeed("set -x; while ! test -e /dev/sda; do sleep 1; done")
|
||||||
|
|
||||||
|
initiatorAuto.succeed("mkfs.xfs /dev/sda")
|
||||||
|
initiatorAuto.succeed("mkdir /mnt && mount /dev/sda /mnt")
|
||||||
|
initiatorAuto.succeed(
|
||||||
|
"nixos-install --no-bootloader --no-root-passwd --system ${nodes.initiatorRootDisk.config.system.build.toplevel}"
|
||||||
|
)
|
||||||
|
initiatorAuto.succeed("umount /mnt && rmdir /mnt")
|
||||||
|
initiatorAuto.shutdown()
|
||||||
|
|
||||||
|
initiatorRootDisk.start()
|
||||||
|
initiatorRootDisk.wait_for_unit("multi-user.target")
|
||||||
|
initiatorRootDisk.wait_for_unit("iscsid")
|
||||||
|
initiatorRootDisk.succeed("touch test")
|
||||||
|
initiatorRootDisk.shutdown()
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
)
|
|
@ -30,7 +30,6 @@ python3.pkgs.buildPythonApplication rec {
|
||||||
++ optionals withDbusPython [ dbus-python ]
|
++ optionals withDbusPython [ dbus-python ]
|
||||||
++ optionals withPyInotify [ pyinotify ]
|
++ optionals withPyInotify [ pyinotify ]
|
||||||
++ optionals withMusicBrainzNgs [ musicbrainzngs ]
|
++ optionals withMusicBrainzNgs [ musicbrainzngs ]
|
||||||
++ optionals stdenv.isDarwin [ pyobjc ]
|
|
||||||
++ optionals withPahoMqtt [ paho-mqtt ];
|
++ optionals withPahoMqtt [ paho-mqtt ];
|
||||||
|
|
||||||
LC_ALL = "en_US.UTF-8";
|
LC_ALL = "en_US.UTF-8";
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{ stdenv, lib, zlib, glib, alsaLib, dbus, gtk3, atk, pango, freetype, fontconfig
|
{ stdenv, lib, zlib, glib, alsaLib, dbus, gtk3, atk, pango, freetype, fontconfig
|
||||||
, libgnome-keyring3, gdk-pixbuf, cairo, cups, expat, libgpgerror, nspr
|
, libgnome-keyring3, gdk-pixbuf, cairo, cups, expat, libgpgerror, nspr
|
||||||
, gconf, nss, xorg, libcap, systemd, libnotify, libsecret, libuuid, at-spi2-atk
|
, gconf, nss, xorg, libcap, systemd, libnotify, libsecret, libuuid, at-spi2-atk
|
||||||
, at-spi2-core, libdbusmenu
|
, at-spi2-core, libdbusmenu, mesa
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
@ -12,6 +12,7 @@ let
|
||||||
xorg.libXcomposite xorg.libXi xorg.libXfixes xorg.libXrandr
|
xorg.libXcomposite xorg.libXi xorg.libXfixes xorg.libXrandr
|
||||||
xorg.libXcursor xorg.libxkbfile xorg.libXScrnSaver libcap systemd libnotify
|
xorg.libXcursor xorg.libxkbfile xorg.libXScrnSaver libcap systemd libnotify
|
||||||
xorg.libxcb libsecret libuuid at-spi2-atk at-spi2-core libdbusmenu
|
xorg.libxcb libsecret libuuid at-spi2-atk at-spi2-core libdbusmenu
|
||||||
|
mesa # required for libgbm
|
||||||
];
|
];
|
||||||
|
|
||||||
libPathNative = lib.makeLibraryPath packages;
|
libPathNative = lib.makeLibraryPath packages;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
, alsaLib, atk, at-spi2-atk, at-spi2-core, cairo, dbus, cups, expat
|
, alsaLib, atk, at-spi2-atk, at-spi2-core, cairo, dbus, cups, expat
|
||||||
, gdk-pixbuf, glib, gtk3, libX11, libXScrnSaver, libXcomposite, libXcursor
|
, gdk-pixbuf, glib, gtk3, libX11, libXScrnSaver, libXcomposite, libXcursor
|
||||||
, libXdamage, libXext, libXfixes, libXi, libXrandr, libXrender, libXtst
|
, libXdamage, libXext, libXfixes, libXi, libXrandr, libXrender, libXtst
|
||||||
, libxcb, libuuid, libxshmfence, nspr, nss, pango
|
, libxcb, libuuid, libxshmfence, nspr, nss, pango, mesa
|
||||||
|
|
||||||
, systemd
|
, systemd
|
||||||
}:
|
}:
|
||||||
|
@ -50,6 +50,7 @@ stdenv.mkDerivation rec {
|
||||||
libXtst
|
libXtst
|
||||||
libxcb
|
libxcb
|
||||||
libuuid
|
libuuid
|
||||||
|
mesa # for libgbm
|
||||||
nspr
|
nspr
|
||||||
nss
|
nss
|
||||||
pango
|
pango
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
WGET_ARGS=( http://download.kde.org/stable/release-service/20.12.2/src -A '*.tar.xz' )
|
WGET_ARGS=( http://download.kde.org/stable/release-service/20.12.3/src -A '*.tar.xz' )
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -7,6 +7,7 @@
|
||||||
, glib
|
, glib
|
||||||
, gtk3
|
, gtk3
|
||||||
, libnotify
|
, libnotify
|
||||||
|
, scandir ? null
|
||||||
}:
|
}:
|
||||||
|
|
||||||
python3Packages.buildPythonApplication rec {
|
python3Packages.buildPythonApplication rec {
|
||||||
|
|
|
@ -23,7 +23,7 @@ buildPythonApplication rec {
|
||||||
dateutil gflags httplib2 parsedatetime six vobject
|
dateutil gflags httplib2 parsedatetime six vobject
|
||||||
google-api-python-client oauth2client uritemplate
|
google-api-python-client oauth2client uritemplate
|
||||||
libnotify
|
libnotify
|
||||||
] ++ lib.optional (!isPy3k) futures;
|
];
|
||||||
|
|
||||||
# There are no tests as of 4.0.0a4
|
# There are no tests as of 4.0.0a4
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
|
@ -138,6 +138,7 @@ let
|
||||||
bison gperf libkrb5
|
bison gperf libkrb5
|
||||||
glib gtk3 dbus-glib
|
glib gtk3 dbus-glib
|
||||||
libXScrnSaver libXcursor libXtst libxshmfence libGLU libGL
|
libXScrnSaver libXcursor libXtst libxshmfence libGLU libGL
|
||||||
|
mesa # required for libgbm
|
||||||
pciutils protobuf speechd libXdamage at-spi2-core
|
pciutils protobuf speechd libXdamage at-spi2-core
|
||||||
jre
|
jre
|
||||||
pipewire
|
pipewire
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
, libjpeg, zlib, dbus, dbus-glib, bzip2, xorg
|
, libjpeg, zlib, dbus, dbus-glib, bzip2, xorg
|
||||||
, freetype, fontconfig, file, nspr, nss, nss_3_53
|
, freetype, fontconfig, file, nspr, nss, nss_3_53
|
||||||
, yasm, libGLU, libGL, sqlite, unzip, makeWrapper
|
, yasm, libGLU, libGL, sqlite, unzip, makeWrapper
|
||||||
, hunspell, libXdamage, libevent, libstartup_notification
|
, hunspell, libevent, libstartup_notification
|
||||||
, libvpx_1_8
|
, libvpx_1_8
|
||||||
, icu67, libpng, jemalloc, glib, pciutils
|
, icu67, libpng, jemalloc, glib, pciutils
|
||||||
, autoconf213, which, gnused, rustPackages, rustPackages_1_45
|
, autoconf213, which, gnused, rustPackages, rustPackages_1_45
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
, pulseaudioSupport ? stdenv.isLinux, libpulseaudio
|
, pulseaudioSupport ? stdenv.isLinux, libpulseaudio
|
||||||
, ffmpegSupport ? true
|
, ffmpegSupport ? true
|
||||||
, gtk3Support ? true, gtk2, gtk3, wrapGAppsHook
|
, gtk3Support ? true, gtk2, gtk3, wrapGAppsHook
|
||||||
, waylandSupport ? true, libxkbcommon
|
, waylandSupport ? true, libxkbcommon, libdrm
|
||||||
, ltoSupport ? (stdenv.isLinux && stdenv.is64bit), overrideCC, buildPackages
|
, ltoSupport ? (stdenv.isLinux && stdenv.is64bit), overrideCC, buildPackages
|
||||||
, gssSupport ? true, libkrb5
|
, gssSupport ? true, libkrb5
|
||||||
, pipewireSupport ? waylandSupport && webrtcSupport, pipewire
|
, pipewireSupport ? waylandSupport && webrtcSupport, pipewire
|
||||||
|
@ -161,6 +161,7 @@ buildStdenv.mkDerivation ({
|
||||||
xorg.libX11 xorg.libXrender xorg.libXft xorg.libXt file
|
xorg.libX11 xorg.libXrender xorg.libXft xorg.libXt file
|
||||||
xorg.pixman yasm libGLU libGL
|
xorg.pixman yasm libGLU libGL
|
||||||
xorg.xorgproto
|
xorg.xorgproto
|
||||||
|
xorg.libXdamage
|
||||||
xorg.libXext makeWrapper
|
xorg.libXext makeWrapper
|
||||||
libevent libstartup_notification /* cairo */
|
libevent libstartup_notification /* cairo */
|
||||||
libpng jemalloc glib
|
libpng jemalloc glib
|
||||||
|
@ -175,7 +176,7 @@ buildStdenv.mkDerivation ({
|
||||||
++ lib.optional pulseaudioSupport libpulseaudio # only headers are needed
|
++ lib.optional pulseaudioSupport libpulseaudio # only headers are needed
|
||||||
++ lib.optional gtk3Support gtk3
|
++ lib.optional gtk3Support gtk3
|
||||||
++ lib.optional gssSupport libkrb5
|
++ lib.optional gssSupport libkrb5
|
||||||
++ lib.optional waylandSupport libxkbcommon
|
++ lib.optionals waylandSupport [ libxkbcommon libdrm ]
|
||||||
++ lib.optional pipewireSupport pipewire
|
++ lib.optional pipewireSupport pipewire
|
||||||
++ lib.optional (lib.versionAtLeast ffversion "82") gnum4
|
++ lib.optional (lib.versionAtLeast ffversion "82") gnum4
|
||||||
++ lib.optionals buildStdenv.isDarwin [ CoreMedia ExceptionHandling Kerberos
|
++ lib.optionals buildStdenv.isDarwin [ CoreMedia ExceptionHandling Kerberos
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
, gnome2, gtk3, atk, at-spi2-atk, cairo, pango, gdk-pixbuf, glib, freetype, fontconfig
|
, gnome2, gtk3, atk, at-spi2-atk, cairo, pango, gdk-pixbuf, glib, freetype, fontconfig
|
||||||
, dbus, libX11, xorg, libXi, libXcursor, libXdamage, libXrandr, libXcomposite
|
, dbus, libX11, xorg, libXi, libXcursor, libXdamage, libXrandr, libXcomposite
|
||||||
, libXext, libXfixes, libXrender, libXtst, libXScrnSaver, nss, nspr, alsaLib
|
, libXext, libXfixes, libXrender, libXtst, libXScrnSaver, nss, nspr, alsaLib
|
||||||
, cups, expat, libuuid, at-spi2-core, libappindicator-gtk3
|
, cups, expat, libuuid, at-spi2-core, libappindicator-gtk3, mesa
|
||||||
# Runtime dependencies:
|
# Runtime dependencies:
|
||||||
, systemd, libnotify, libdbusmenu, libpulseaudio
|
, systemd, libnotify, libdbusmenu, libpulseaudio
|
||||||
# Unfortunately this also overwrites the UI language (not just the spell
|
# Unfortunately this also overwrites the UI language (not just the spell
|
||||||
|
@ -73,6 +73,7 @@ in stdenv.mkDerivation rec {
|
||||||
libappindicator-gtk3
|
libappindicator-gtk3
|
||||||
libnotify
|
libnotify
|
||||||
libuuid
|
libuuid
|
||||||
|
mesa # for libgbm
|
||||||
nspr
|
nspr
|
||||||
nss
|
nss
|
||||||
pango
|
pango
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
, alsaSupport ? stdenv.isLinux, alsaLib
|
, alsaSupport ? stdenv.isLinux, alsaLib
|
||||||
, pulseaudioSupport ? stdenv.isLinux, libpulseaudio
|
, pulseaudioSupport ? stdenv.isLinux, libpulseaudio
|
||||||
, gtk3Support ? true, gtk2, gtk3, wrapGAppsHook
|
, gtk3Support ? true, gtk2, gtk3, wrapGAppsHook
|
||||||
, waylandSupport ? true
|
, waylandSupport ? true, libdrm
|
||||||
, libxkbcommon, calendarSupport ? true
|
, libxkbcommon, calendarSupport ? true
|
||||||
|
|
||||||
# Use official trademarked branding. Permission obtained at:
|
# Use official trademarked branding. Permission obtained at:
|
||||||
|
@ -137,12 +137,13 @@ stdenv.mkDerivation rec {
|
||||||
xorg.libXt
|
xorg.libXt
|
||||||
xorg.pixman
|
xorg.pixman
|
||||||
xorg.xorgproto
|
xorg.xorgproto
|
||||||
|
xorg.libXdamage
|
||||||
zip
|
zip
|
||||||
zlib
|
zlib
|
||||||
] ++ lib.optional alsaSupport alsaLib
|
] ++ lib.optional alsaSupport alsaLib
|
||||||
++ lib.optional gtk3Support gtk3
|
++ lib.optional gtk3Support gtk3
|
||||||
++ lib.optional pulseaudioSupport libpulseaudio
|
++ lib.optional pulseaudioSupport libpulseaudio
|
||||||
++ lib.optional waylandSupport libxkbcommon;
|
++ lib.optionals waylandSupport [ libxkbcommon libdrm ];
|
||||||
|
|
||||||
NIX_CFLAGS_COMPILE =[
|
NIX_CFLAGS_COMPILE =[
|
||||||
"-I${glib.dev}/include/gio-unix-2.0"
|
"-I${glib.dev}/include/gio-unix-2.0"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ stdenv, lib, fetchurl, dpkg
|
{ stdenv, lib, fetchurl, dpkg
|
||||||
, alsaLib, atk, cairo, cups, dbus, expat, fontconfig, freetype
|
, alsaLib, atk, cairo, cups, dbus, expat, fontconfig, freetype
|
||||||
, gdk-pixbuf, glib, gnome2, pango, nspr, nss, gtk3
|
, gdk-pixbuf, glib, gnome2, pango, nspr, nss, gtk3, mesa
|
||||||
, xorg, autoPatchelfHook, systemd, libnotify, libappindicator
|
, xorg, autoPatchelfHook, systemd, libnotify, libappindicator
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ let deps = [
|
||||||
gtk3
|
gtk3
|
||||||
libappindicator
|
libappindicator
|
||||||
libnotify
|
libnotify
|
||||||
|
mesa
|
||||||
xorg.libX11
|
xorg.libX11
|
||||||
xorg.libXScrnSaver
|
xorg.libXScrnSaver
|
||||||
xorg.libXcomposite
|
xorg.libXcomposite
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
, gtk3
|
, gtk3
|
||||||
, libpulseaudio
|
, libpulseaudio
|
||||||
, libudev0-shim
|
, libudev0-shim
|
||||||
|
, libdrm
|
||||||
, makeWrapper
|
, makeWrapper
|
||||||
, nspr
|
, nspr
|
||||||
, nss
|
, nss
|
||||||
|
@ -101,6 +102,7 @@ in stdenv.mkDerivation rec {
|
||||||
gtk2
|
gtk2
|
||||||
gtk3
|
gtk3
|
||||||
libpulseaudio
|
libpulseaudio
|
||||||
|
libdrm
|
||||||
nspr
|
nspr
|
||||||
nss
|
nss
|
||||||
qt5.qtbase
|
qt5.qtbase
|
||||||
|
|
|
@ -11,6 +11,14 @@ let
|
||||||
|
|
||||||
python3 = pkgs.python3.override {
|
python3 = pkgs.python3.override {
|
||||||
packageOverrides = self: super: {
|
packageOverrides = self: super: {
|
||||||
|
cypari2 = super.cypari2.overridePythonAttrs (oldAttrs: rec {
|
||||||
|
version = "2.1.1";
|
||||||
|
src = oldAttrs.src.override {
|
||||||
|
inherit version;
|
||||||
|
sha256 = "df1ef62e771ec36e5a456f5fc8b51bc6745b70f0efdd0c7a30c3f0b5f1fb93db";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
# `sagelib`, i.e. all of sage except some wrappers and runtime dependencies
|
# `sagelib`, i.e. all of sage except some wrappers and runtime dependencies
|
||||||
sagelib = self.callPackage ./sagelib.nix {
|
sagelib = self.callPackage ./sagelib.nix {
|
||||||
inherit flint arb;
|
inherit flint arb;
|
||||||
|
|
|
@ -19,7 +19,7 @@ stdenv.mkDerivation {
|
||||||
NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations";
|
NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations";
|
||||||
|
|
||||||
nativeBuildInputs = [ pkg-config ];
|
nativeBuildInputs = [ pkg-config ];
|
||||||
buildInputs = [ which gnome3.gnome-common glib intltool libtool cairo gtk3 xorg.xwininfo ]
|
buildInputs = [ which gnome3.gnome-common glib intltool libtool cairo gtk3 xorg.xwininfo xorg.libXdamage ]
|
||||||
++ (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-bad gst-plugins-good gst-plugins-ugly gst-libav wrapGAppsHook ]);
|
++ (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-bad gst-plugins-good gst-plugins-ugly gst-libav wrapGAppsHook ]);
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
|
|
@ -127,6 +127,7 @@ in stdenv.mkDerivation {
|
||||||
bluez giflib glib harfbuzz lcms2 libpthreadstubs
|
bluez giflib glib harfbuzz lcms2 libpthreadstubs
|
||||||
ffmpeg flatbuffers fmt fstrcmp rapidjson
|
ffmpeg flatbuffers fmt fstrcmp rapidjson
|
||||||
lirc
|
lirc
|
||||||
|
mesa # for libEGL
|
||||||
]
|
]
|
||||||
++ lib.optional x11Support [
|
++ lib.optional x11Support [
|
||||||
libX11 xorgproto libXt libXmu libXext.dev libXdmcp
|
libX11 xorgproto libXt libXmu libXext.dev libXdmcp
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
, gtk3-x11
|
, gtk3-x11
|
||||||
, libudev0-shim
|
, libudev0-shim
|
||||||
, libuuid
|
, libuuid
|
||||||
|
, mesa
|
||||||
, nss
|
, nss
|
||||||
, nspr
|
, nspr
|
||||||
, xorg
|
, xorg
|
||||||
|
@ -63,6 +64,7 @@ stdenv.mkDerivation rec {
|
||||||
glib
|
glib
|
||||||
pango
|
pango
|
||||||
gtk3-x11
|
gtk3-x11
|
||||||
|
mesa
|
||||||
nss
|
nss
|
||||||
nspr
|
nspr
|
||||||
libuuid
|
libuuid
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{ lib, stdenv, fetchFromGitHub
|
{ lib, stdenv, fetchFromGitHub
|
||||||
, meson, ninja, pkg-config, wayland, scdoc, makeWrapper
|
, meson, ninja, pkg-config, wayland, scdoc, makeWrapper
|
||||||
, wlroots, wayland-protocols, pixman, libxkbcommon
|
, wlroots, wayland-protocols, pixman, libxkbcommon
|
||||||
, systemd, libGL, libX11
|
, systemd, libGL, libX11, mesa
|
||||||
, xwayland ? null
|
, xwayland ? null
|
||||||
, nixosTests
|
, nixosTests
|
||||||
}:
|
}:
|
||||||
|
@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
wlroots wayland wayland-protocols pixman libxkbcommon
|
wlroots wayland wayland-protocols pixman libxkbcommon
|
||||||
|
mesa # for libEGL headers
|
||||||
systemd libGL libX11
|
systemd libGL libX11
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{ lib, stdenv, fetchFromGitHub
|
{ lib, stdenv, fetchFromGitHub
|
||||||
, meson, ninja, pkg-config, wayland, scdoc, makeWrapper
|
, meson, ninja, pkg-config, wayland, scdoc, makeWrapper
|
||||||
, wlroots, wayland-protocols, pixman, libxkbcommon
|
, wlroots, wayland-protocols, pixman, libxkbcommon
|
||||||
, cairo , pango, fontconfig, pandoc, systemd
|
, cairo , pango, fontconfig, pandoc, systemd, mesa
|
||||||
, withXwayland ? true, xwayland
|
, withXwayland ? true, xwayland
|
||||||
, nixosTests
|
, nixosTests
|
||||||
}:
|
}:
|
||||||
|
@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
wlroots wayland wayland-protocols pixman libxkbcommon cairo
|
wlroots wayland wayland-protocols pixman libxkbcommon cairo
|
||||||
pango fontconfig pandoc systemd
|
pango fontconfig pandoc systemd
|
||||||
|
mesa # for libEGL headers
|
||||||
];
|
];
|
||||||
|
|
||||||
outputs = [ "out" "contrib" ];
|
outputs = [ "out" "contrib" ];
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{ lib, stdenv, fetchzip,
|
{ lib, stdenv, fetchzip,
|
||||||
pkg-config, bmake,
|
pkg-config, bmake,
|
||||||
cairo, glib, libevdev, libinput, libxkbcommon, linux-pam, pango, pixman,
|
cairo, glib, libevdev, libinput, libxkbcommon, linux-pam, pango, pixman,
|
||||||
libucl, wayland, wayland-protocols, wlroots,
|
libucl, wayland, wayland-protocols, wlroots, mesa,
|
||||||
features ? {
|
features ? {
|
||||||
gammacontrol = true;
|
gammacontrol = true;
|
||||||
layershell = true;
|
layershell = true;
|
||||||
|
@ -35,6 +35,7 @@ stdenv.mkDerivation {
|
||||||
pango
|
pango
|
||||||
pixman
|
pixman
|
||||||
libucl
|
libucl
|
||||||
|
mesa # for libEGL
|
||||||
wayland
|
wayland
|
||||||
wayland-protocols
|
wayland-protocols
|
||||||
wlroots
|
wlroots
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
, pixman
|
, pixman
|
||||||
, udev
|
, udev
|
||||||
, libGL
|
, libGL
|
||||||
|
, mesa
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
|
@ -33,6 +34,7 @@ stdenv.mkDerivation rec {
|
||||||
pixman
|
pixman
|
||||||
udev
|
udev
|
||||||
libGL
|
libGL
|
||||||
|
mesa # for libEGL
|
||||||
];
|
];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ stdenv, lib, fetchurl, meson, ninja, pkg-config, git
|
{ stdenv, lib, fetchurl, meson, ninja, pkg-config, git
|
||||||
, cairo, libdrm, libexecinfo, libinput, libjpeg, libxkbcommon, wayland
|
, cairo, libdrm, libexecinfo, libinput, libjpeg, libxkbcommon, wayland
|
||||||
, wayland-protocols, wf-config, wlroots
|
, wayland-protocols, wf-config, wlroots, mesa
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
|
@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
|
||||||
nativeBuildInputs = [ meson ninja pkg-config wayland ];
|
nativeBuildInputs = [ meson ninja pkg-config wayland ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
cairo libdrm libexecinfo libinput libjpeg libxkbcommon wayland
|
cairo libdrm libexecinfo libinput libjpeg libxkbcommon wayland
|
||||||
wayland-protocols wf-config wlroots
|
wayland-protocols wf-config wlroots mesa
|
||||||
];
|
];
|
||||||
|
|
||||||
mesonFlags = [ "--sysconfdir" "/etc" ];
|
mesonFlags = [ "--sysconfdir" "/etc" ];
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
, wayland
|
, wayland
|
||||||
, wayland-protocols
|
, wayland-protocols
|
||||||
, wlroots
|
, wlroots
|
||||||
|
, mesa
|
||||||
, xwayland
|
, xwayland
|
||||||
, makeWrapper
|
, makeWrapper
|
||||||
}:
|
}:
|
||||||
|
@ -32,6 +33,7 @@ stdenv.mkDerivation rec {
|
||||||
wayland
|
wayland
|
||||||
wayland-protocols
|
wayland-protocols
|
||||||
wlroots
|
wlroots
|
||||||
|
mesa # for libEGL
|
||||||
xwayland
|
xwayland
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,81 @@
|
||||||
|
# Unconditionally adding in platform version flags will result in warnings that
|
||||||
|
# will be treated as errors by some packages. Add any missing flags here.
|
||||||
|
|
||||||
|
# There are two things to be configured: the "platform version" (oldest
|
||||||
|
# supported version of macos, ios, etc), and the "sdk version".
|
||||||
|
#
|
||||||
|
# The modern way of configuring these is to use:
|
||||||
|
# -platform_version $platform $platform_version $sdk_version"
|
||||||
|
#
|
||||||
|
# The old way is still supported, and uses flags like:
|
||||||
|
# -${platform}_version_min $platform_version
|
||||||
|
# -sdk_version $sdk_version
|
||||||
|
#
|
||||||
|
# If both styles are specified ld will combine them. If multiple versions are
|
||||||
|
# specified for the same platform, ld will emit an error.
|
||||||
|
#
|
||||||
|
# The following adds flags for whichever properties have not already been
|
||||||
|
# provided.
|
||||||
|
|
||||||
|
havePlatformVersionFlag=
|
||||||
|
haveDarwinSDKVersion=
|
||||||
|
haveDarwinPlatformVersion=
|
||||||
|
|
||||||
|
# Roles will set by add-flags.sh, but add-flags.sh can be skipped when the
|
||||||
|
# cc-wrapper has added the linker flags. Both the cc-wrapper and the binutils
|
||||||
|
# wrapper mangle the same variable (MACOSX_DEPLOYMENT_TARGET), so if roles are
|
||||||
|
# empty due to being run through the cc-wrapper then the mangle here is a no-op
|
||||||
|
# and we still do the right thing.
|
||||||
|
#
|
||||||
|
# To be robust, make sure we always have the correct set of roles.
|
||||||
|
accumulateRoles
|
||||||
|
|
||||||
|
mangleVarSingle @darwinMinVersionVariable@ ${role_suffixes[@]+"${role_suffixes[@]}"}
|
||||||
|
|
||||||
|
n=0
|
||||||
|
nParams=${#params[@]}
|
||||||
|
while (( n < nParams )); do
|
||||||
|
p=${params[n]}
|
||||||
|
case "$p" in
|
||||||
|
# the current platform
|
||||||
|
-@darwinPlatform@_version_min)
|
||||||
|
haveDarwinPlatformVersion=1
|
||||||
|
;;
|
||||||
|
|
||||||
|
# legacy aliases
|
||||||
|
-macosx_version_min|-iphoneos_version_min|-iosmac_version_min|-uikitformac_version_min)
|
||||||
|
haveDarwinPlatformVersion=1
|
||||||
|
;;
|
||||||
|
|
||||||
|
-sdk_version)
|
||||||
|
haveDarwinSDKVersion=1
|
||||||
|
;;
|
||||||
|
|
||||||
|
-platform_version)
|
||||||
|
havePlatformVersionFlag=1
|
||||||
|
|
||||||
|
# If clang can't determine the sdk version it will pass 0.0.0. This
|
||||||
|
# has runtime effects so we override this to use the known sdk
|
||||||
|
# version.
|
||||||
|
if [ "${params[n+3]-}" = 0.0.0 ]; then
|
||||||
|
params[n+3]=@darwinSdkVersion@
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
n=$((n + 1))
|
||||||
|
done
|
||||||
|
|
||||||
|
# If the caller has set -platform_version, trust they're doing the right thing.
|
||||||
|
# This will be the typical case for clang in nixpkgs.
|
||||||
|
if [ ! "$havePlatformVersionFlag" ]; then
|
||||||
|
if [ ! "$haveDarwinSDKVersion" ] && [ ! "$haveDarwinPlatformVersion" ]; then
|
||||||
|
# Nothing provided. Use the modern "-platform_version" to set both.
|
||||||
|
extraBefore+=(-platform_version @darwinPlatform@ "${@darwinMinVersionVariable@_@suffixSalt@:-@darwinMinVersion@}" @darwinSdkVersion@)
|
||||||
|
elif [ ! "$haveDarwinSDKVersion" ]; then
|
||||||
|
# Add missing sdk version
|
||||||
|
extraBefore+=(-sdk_version @darwinSdkVersion@)
|
||||||
|
elif [ ! "$haveDarwinPlatformVersion" ]; then
|
||||||
|
# Add missing platform version
|
||||||
|
extraBefore+=(-@darwinPlatform@_version_min "${@darwinMinVersionVariable@_@suffixSalt@:-@darwinMinVersion@}")
|
||||||
|
fi
|
||||||
|
fi
|
|
@ -252,11 +252,6 @@ stdenv.mkDerivation {
|
||||||
fi
|
fi
|
||||||
'')
|
'')
|
||||||
|
|
||||||
# Ensure consistent LC_VERSION_MIN_MACOSX and remove LC_UUID.
|
|
||||||
+ optionalString stdenv.targetPlatform.isMacOS ''
|
|
||||||
echo "-sdk_version 10.12 -no_uuid" >> $out/nix-support/libc-ldflags-before
|
|
||||||
''
|
|
||||||
|
|
||||||
##
|
##
|
||||||
## User env support
|
## User env support
|
||||||
##
|
##
|
||||||
|
@ -310,6 +305,13 @@ stdenv.mkDerivation {
|
||||||
echo "-arch ${targetPlatform.darwinArch}" >> $out/nix-support/libc-ldflags
|
echo "-arch ${targetPlatform.darwinArch}" >> $out/nix-support/libc-ldflags
|
||||||
''
|
''
|
||||||
|
|
||||||
|
###
|
||||||
|
### Remove LC_UUID
|
||||||
|
###
|
||||||
|
+ optionalString (stdenv.targetPlatform.isDarwin && !(stdenv.cc.bintools.bintools.isGNU or false)) ''
|
||||||
|
echo "-no_uuid" >> $out/nix-support/libc-ldflags-before
|
||||||
|
''
|
||||||
|
|
||||||
+ ''
|
+ ''
|
||||||
for flags in "$out/nix-support"/*flags*; do
|
for flags in "$out/nix-support"/*flags*; do
|
||||||
substituteInPlace "$flags" --replace $'\n' ' '
|
substituteInPlace "$flags" --replace $'\n' ' '
|
||||||
|
@ -320,6 +322,23 @@ stdenv.mkDerivation {
|
||||||
substituteAll ${../wrapper-common/utils.bash} $out/nix-support/utils.bash
|
substituteAll ${../wrapper-common/utils.bash} $out/nix-support/utils.bash
|
||||||
''
|
''
|
||||||
|
|
||||||
|
###
|
||||||
|
### Ensure consistent LC_VERSION_MIN_MACOSX
|
||||||
|
###
|
||||||
|
+ optionalString stdenv.targetPlatform.isDarwin (
|
||||||
|
let
|
||||||
|
inherit (stdenv.targetPlatform)
|
||||||
|
darwinPlatform darwinSdkVersion
|
||||||
|
darwinMinVersion darwinMinVersionVariable;
|
||||||
|
in ''
|
||||||
|
export darwinPlatform=${darwinPlatform}
|
||||||
|
export darwinMinVersion=${darwinMinVersion}
|
||||||
|
export darwinSdkVersion=${darwinSdkVersion}
|
||||||
|
export darwinMinVersionVariable=${darwinMinVersionVariable}
|
||||||
|
substituteAll ${./add-darwin-ldflags-before.sh} $out/nix-support/add-local-ldflags-before.sh
|
||||||
|
''
|
||||||
|
)
|
||||||
|
|
||||||
##
|
##
|
||||||
## Extra custom steps
|
## Extra custom steps
|
||||||
##
|
##
|
||||||
|
|
|
@ -78,6 +78,14 @@ fi
|
||||||
|
|
||||||
extraAfter+=($NIX_LDFLAGS_AFTER_@suffixSalt@)
|
extraAfter+=($NIX_LDFLAGS_AFTER_@suffixSalt@)
|
||||||
|
|
||||||
|
# These flags *must not* be pulled up to -Wl, flags, so they can't go in
|
||||||
|
# add-flags.sh. They must always be set, so must not be disabled by
|
||||||
|
# NIX_LDFLAGS_SET.
|
||||||
|
if [ -e @out@/nix-support/add-local-ldflags-before.sh ]; then
|
||||||
|
source @out@/nix-support/add-local-ldflags-before.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Specify the target emulation if nothing is passed in ("-m" overrides this
|
# Specify the target emulation if nothing is passed in ("-m" overrides this
|
||||||
# environment variable). Ensures we never blindly fallback on targeting the host
|
# environment variable). Ensures we never blindly fallback on targeting the host
|
||||||
# platform.
|
# platform.
|
||||||
|
|
|
@ -65,5 +65,13 @@ if [ -e @out@/nix-support/cc-cflags-before ]; then
|
||||||
NIX_CFLAGS_COMPILE_BEFORE_@suffixSalt@="$(< @out@/nix-support/cc-cflags-before) $NIX_CFLAGS_COMPILE_BEFORE_@suffixSalt@"
|
NIX_CFLAGS_COMPILE_BEFORE_@suffixSalt@="$(< @out@/nix-support/cc-cflags-before) $NIX_CFLAGS_COMPILE_BEFORE_@suffixSalt@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Only add darwin min version flag if a default darwin min version is set,
|
||||||
|
# which is a signal that we're targetting darwin.
|
||||||
|
if [ "@darwinMinVersion@" ]; then
|
||||||
|
mangleVarSingle @darwinMinVersionVariable@ ${role_suffixes[@]+"${role_suffixes[@]}"}
|
||||||
|
|
||||||
|
NIX_CFLAGS_COMPILE_BEFORE_@suffixSalt@="-m@darwinPlatformForCC@-version-min=${@darwinMinVersionVariable@_@suffixSalt@:-@darwinMinVersion@} $NIX_CFLAGS_COMPILE_BEFORE_@suffixSalt@"
|
||||||
|
fi
|
||||||
|
|
||||||
# That way forked processes will not extend these environment variables again.
|
# That way forked processes will not extend these environment variables again.
|
||||||
export NIX_CC_WRAPPER_FLAGS_SET_@suffixSalt@=1
|
export NIX_CC_WRAPPER_FLAGS_SET_@suffixSalt@=1
|
||||||
|
|
|
@ -100,6 +100,18 @@ let
|
||||||
else
|
else
|
||||||
false;
|
false;
|
||||||
|
|
||||||
|
|
||||||
|
darwinPlatformForCC = optionalString stdenv.targetPlatform.isDarwin (
|
||||||
|
if (targetPlatform.darwinPlatform == "macos" && isGNU) then "macosx"
|
||||||
|
else targetPlatform.darwinPlatform
|
||||||
|
);
|
||||||
|
|
||||||
|
darwinMinVersion = optionalString stdenv.targetPlatform.isDarwin (
|
||||||
|
stdenv.targetPlatform.darwinMinVersion
|
||||||
|
);
|
||||||
|
|
||||||
|
darwinMinVersionVariable = optionalString stdenv.targetPlatform.isDarwin
|
||||||
|
stdenv.targetPlatform.darwinMinVersionVariable;
|
||||||
in
|
in
|
||||||
|
|
||||||
# Ensure bintools matches
|
# Ensure bintools matches
|
||||||
|
@ -122,6 +134,7 @@ stdenv.mkDerivation {
|
||||||
gnugrep_bin = if nativeTools then "" else gnugrep;
|
gnugrep_bin = if nativeTools then "" else gnugrep;
|
||||||
|
|
||||||
inherit targetPrefix suffixSalt;
|
inherit targetPrefix suffixSalt;
|
||||||
|
inherit darwinPlatformForCC darwinMinVersion darwinMinVersionVariable;
|
||||||
|
|
||||||
outputs = [ "out" ] ++ optionals propagateDoc [ "man" "info" ];
|
outputs = [ "out" ] ++ optionals propagateDoc [ "man" "info" ];
|
||||||
|
|
||||||
|
@ -474,6 +487,10 @@ stdenv.mkDerivation {
|
||||||
done
|
done
|
||||||
''
|
''
|
||||||
|
|
||||||
|
+ optionalString stdenv.targetPlatform.isDarwin ''
|
||||||
|
echo "-arch ${targetPlatform.darwinArch}" >> $out/nix-support/cc-cflags
|
||||||
|
''
|
||||||
|
|
||||||
# There are a few tools (to name one libstdcxx5) which do not work
|
# There are a few tools (to name one libstdcxx5) which do not work
|
||||||
# well with multi line flags, so make the flags single line again
|
# well with multi line flags, so make the flags single line again
|
||||||
+ ''
|
+ ''
|
||||||
|
@ -486,10 +503,6 @@ stdenv.mkDerivation {
|
||||||
substituteAll ${../wrapper-common/utils.bash} $out/nix-support/utils.bash
|
substituteAll ${../wrapper-common/utils.bash} $out/nix-support/utils.bash
|
||||||
''
|
''
|
||||||
|
|
||||||
+ optionalString stdenv.targetPlatform.isDarwin ''
|
|
||||||
echo "-arch ${targetPlatform.darwinArch}" >> $out/nix-support/cc-cflags
|
|
||||||
''
|
|
||||||
|
|
||||||
##
|
##
|
||||||
## Extra custom steps
|
## Extra custom steps
|
||||||
##
|
##
|
||||||
|
|
|
@ -49,6 +49,35 @@ mangleVarBool() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Combine a singular value from all roles. If multiple roles are being served,
|
||||||
|
# and the value differs in these roles then the request is impossible to
|
||||||
|
# satisfy and we abort immediately.
|
||||||
|
mangleVarSingle() {
|
||||||
|
local var="$1"
|
||||||
|
shift
|
||||||
|
local -a role_suffixes=("$@")
|
||||||
|
|
||||||
|
local outputVar="${var}_@suffixSalt@"
|
||||||
|
for suffix in "${role_suffixes[@]}"; do
|
||||||
|
local inputVar="${var}${suffix}"
|
||||||
|
if [ -v "$inputVar" ]; then
|
||||||
|
if [ -v "$outputVar" ]; then
|
||||||
|
if [ "${!outputVar}" != "${!inputVar}" ]; then
|
||||||
|
{
|
||||||
|
echo "Multiple conflicting values defined for $outputVar"
|
||||||
|
echo "Existing value is ${!outputVar}"
|
||||||
|
echo "Attempting to set to ${!inputVar} via $inputVar"
|
||||||
|
} >&2
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
declare -gx ${outputVar}="${!inputVar}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
skip () {
|
skip () {
|
||||||
if (( "${NIX_DEBUG:-0}" >= 1 )); then
|
if (( "${NIX_DEBUG:-0}" >= 1 )); then
|
||||||
echo "skipping impure path $1" >&2
|
echo "skipping impure path $1" >&2
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
{ lib, fetchzip }:
|
{ lib, fetchzip }:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "2.1.48";
|
version = "2.1.52";
|
||||||
|
|
||||||
in fetchzip {
|
in fetchzip {
|
||||||
name = "mailcap-${version}";
|
name = "mailcap-${version}";
|
||||||
|
|
||||||
url = "https://releases.pagure.org/mailcap/mailcap-${version}.tar.xz";
|
url = "https://releases.pagure.org/mailcap/mailcap-${version}.tar.xz";
|
||||||
sha256 = "08d0avz8971hkggd60dk9yyd14izz24yag3prpfafbvm670jlmqg";
|
sha256 = "sha256-2GRNg3zoMPMaOk2zoAx5sVIzjbQhnYJuaO8nrzWujVc=";
|
||||||
|
|
||||||
postFetch = ''
|
postFetch = ''
|
||||||
tar -xavf $downloadedFile --strip-components=1
|
tar -xavf $downloadedFile --strip-components=1
|
||||||
substituteInPlace mailcap --replace "/usr/bin/" ""
|
substituteInPlace mailcap --replace "/usr/bin/" ""
|
||||||
gzip mailcap.4
|
gzip mailcap.5
|
||||||
sh generate-nginx-mimetypes.sh < mime.types > nginx-mime.types
|
sh generate-nginx-mimetypes.sh < mime.types > nginx-mime.types
|
||||||
|
|
||||||
install -D -m0644 nginx-mime.types $out/etc/nginx/mime.types
|
install -D -m0644 nginx-mime.types $out/etc/nginx/mime.types
|
||||||
install -D -m0644 -t $out/etc mailcap mime.types
|
install -D -m0644 -t $out/etc mailcap mime.types
|
||||||
install -D -m0644 -t $out/share/man/man4 mailcap.4.gz
|
install -D -m0644 -t $out/share/man/man5 mailcap.5.gz
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
|
|
@ -16,9 +16,11 @@
|
||||||
, ninja
|
, ninja
|
||||||
, xkeyboard_config
|
, xkeyboard_config
|
||||||
, libxkbfile
|
, libxkbfile
|
||||||
|
, libXdamage
|
||||||
, libxkbcommon
|
, libxkbcommon
|
||||||
, libXtst
|
, libXtst
|
||||||
, libinput
|
, libinput
|
||||||
|
, libdrm
|
||||||
, gsettings-desktop-schemas
|
, gsettings-desktop-schemas
|
||||||
, glib
|
, glib
|
||||||
, gtk3
|
, gtk3
|
||||||
|
@ -27,6 +29,7 @@
|
||||||
, libgudev
|
, libgudev
|
||||||
, libwacom
|
, libwacom
|
||||||
, xwayland
|
, xwayland
|
||||||
|
, mesa
|
||||||
, meson
|
, meson
|
||||||
, gnome-settings-daemon
|
, gnome-settings-daemon
|
||||||
, xorgserver
|
, xorgserver
|
||||||
|
@ -84,6 +87,7 @@ let self = stdenv.mkDerivation rec {
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
desktop-file-utils
|
desktop-file-utils
|
||||||
gettext
|
gettext
|
||||||
|
mesa # needed for gbm
|
||||||
meson
|
meson
|
||||||
ninja
|
ninja
|
||||||
pkg-config
|
pkg-config
|
||||||
|
@ -102,12 +106,14 @@ let self = stdenv.mkDerivation rec {
|
||||||
gsettings-desktop-schemas
|
gsettings-desktop-schemas
|
||||||
gtk3
|
gtk3
|
||||||
libcanberra
|
libcanberra
|
||||||
|
libdrm
|
||||||
libgudev
|
libgudev
|
||||||
libinput
|
libinput
|
||||||
libstartup_notification
|
libstartup_notification
|
||||||
libwacom
|
libwacom
|
||||||
libxkbcommon
|
libxkbcommon
|
||||||
libxkbfile
|
libxkbfile
|
||||||
|
libXdamage
|
||||||
pango
|
pango
|
||||||
pipewire
|
pipewire
|
||||||
sysprof
|
sysprof
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
, granite
|
, granite
|
||||||
, gettext
|
, gettext
|
||||||
, mutter
|
, mutter
|
||||||
|
, mesa
|
||||||
, json-glib
|
, json-glib
|
||||||
, python3
|
, python3
|
||||||
, elementary-gtk-theme
|
, elementary-gtk-theme
|
||||||
|
@ -55,6 +56,7 @@ stdenv.mkDerivation rec {
|
||||||
json-glib
|
json-glib
|
||||||
libgee
|
libgee
|
||||||
mutter
|
mutter
|
||||||
|
mesa # for libEGL
|
||||||
];
|
];
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
|
|
@ -13,5 +13,4 @@ mkDerivation {
|
||||||
ki18n kio kwindowsystem plasma-framework kcoreaddons kdbusaddons kded
|
ki18n kio kwindowsystem plasma-framework kcoreaddons kdbusaddons kded
|
||||||
kiconthemes knotifications kwidgetsaddons
|
kiconthemes knotifications kwidgetsaddons
|
||||||
];
|
];
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,13 @@ existing packages here and modify it as necessary.
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
minQtVersion = "5.15";
|
||||||
|
broken = lib.versionOlder libsForQt5.qtbase.version minQtVersion;
|
||||||
|
maintainers = with lib.maintainers; [ ttuegel nyanloutre ];
|
||||||
|
license = with lib.licenses; [
|
||||||
|
lgpl21Plus lgpl3Plus bsd2 mit gpl2Plus gpl3Plus fdl12
|
||||||
|
];
|
||||||
|
|
||||||
srcs = import ./srcs.nix {
|
srcs = import ./srcs.nix {
|
||||||
inherit fetchurl;
|
inherit fetchurl;
|
||||||
mirror = "mirror://kde";
|
mirror = "mirror://kde";
|
||||||
|
@ -81,14 +88,15 @@ let
|
||||||
defaultSetupHook = if hasBin && hasDev then propagateBin else null;
|
defaultSetupHook = if hasBin && hasDev then propagateBin else null;
|
||||||
setupHook = args.setupHook or defaultSetupHook;
|
setupHook = args.setupHook or defaultSetupHook;
|
||||||
|
|
||||||
meta = {
|
meta =
|
||||||
license = with lib.licenses; [
|
let meta = args.meta or {}; in
|
||||||
lgpl21Plus lgpl3Plus bsd2 mit gpl2Plus gpl3Plus fdl12
|
meta // {
|
||||||
];
|
homepage = meta.homepage or "http://www.kde.org";
|
||||||
platforms = lib.platforms.linux;
|
license = meta.license or license;
|
||||||
maintainers = with lib.maintainers; [ ttuegel nyanloutre ];
|
maintainers = (meta.maintainers or []) ++ maintainers;
|
||||||
homepage = "http://www.kde.org";
|
platforms = meta.platforms or lib.platforms.linux;
|
||||||
} // (args.meta or {});
|
broken = meta.broken or broken;
|
||||||
|
};
|
||||||
in
|
in
|
||||||
mkDerivation (args // {
|
mkDerivation (args // {
|
||||||
name = "${name}-${version}";
|
name = "${name}-${version}";
|
||||||
|
|
|
@ -33,7 +33,6 @@
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "discover";
|
name = "discover";
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules gettext kdoctools python3 ];
|
nativeBuildInputs = [ extra-cmake-modules gettext kdoctools python3 ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
# discount is needed for libmarkdown
|
# discount is needed for libmarkdown
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "kactivitymanagerd";
|
name = "kactivitymanagerd";
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
boost kconfig kcoreaddons kdbusaddons kglobalaccel ki18n kio kwindowsystem
|
boost kconfig kcoreaddons kdbusaddons kglobalaccel ki18n kio kwindowsystem
|
||||||
|
|
|
@ -5,5 +5,4 @@ mkDerivation {
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [ qtbase ki18n ];
|
buildInputs = [ qtbase ki18n ];
|
||||||
outputs = [ "out" "dev" ];
|
outputs = [ "out" "dev" ];
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,5 +8,4 @@ mkDerivation {
|
||||||
name = "kgamma5";
|
name = "kgamma5";
|
||||||
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
||||||
buildInputs = [ kconfig kconfigwidgets ki18n qtx11extras libXxf86vm ];
|
buildInputs = [ kconfig kconfigwidgets ki18n qtx11extras libXxf86vm ];
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15";
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,5 +14,4 @@ mkDerivation {
|
||||||
plasma-framework plasma-workspace qtx11extras
|
plasma-framework plasma-workspace qtx11extras
|
||||||
];
|
];
|
||||||
outputs = [ "bin" "dev" "out" ];
|
outputs = [ "bin" "dev" "out" ];
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.14";
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "kinfocenter";
|
name = "kinfocenter";
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
kcmutils kcompletion kconfig kconfigwidgets kcoreaddons kdbusaddons
|
kcmutils kcompletion kconfig kconfigwidgets kcoreaddons kdbusaddons
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "kscreenlocker";
|
name = "kscreenlocker";
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
kcmutils kcrash kdeclarative kdelibs4support kglobalaccel kidletime kwayland
|
kcmutils kcrash kdeclarative kdelibs4support kglobalaccel kidletime kwayland
|
||||||
|
|
|
@ -8,5 +8,4 @@ mkDerivation {
|
||||||
name = "ksshaskpass";
|
name = "ksshaskpass";
|
||||||
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
||||||
buildInputs = [ kcoreaddons ki18n kwallet kwidgetsaddons qtbase ];
|
buildInputs = [ kcoreaddons ki18n kwallet kwidgetsaddons qtbase ];
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "ksysguard";
|
name = "ksysguard";
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
kconfig kcoreaddons kitemviews knewstuff kiconthemes libksysguard
|
kconfig kcoreaddons kitemviews knewstuff kiconthemes libksysguard
|
||||||
|
|
|
@ -8,5 +8,4 @@ mkDerivation {
|
||||||
name = "kwayland-integration";
|
name = "kwayland-integration";
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [ kguiaddons kidletime kwindowsystem kwayland qtbase ];
|
buildInputs = [ kguiaddons kidletime kwindowsystem kwayland qtbase ];
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,5 +15,4 @@ mkDerivation {
|
||||||
kwayland plasma-wayland-protocols wayland wayland-protocols
|
kwayland plasma-wayland-protocols wayland wayland-protocols
|
||||||
];
|
];
|
||||||
patches = [ ./0001-Use-KDE_INSTALL_TARGETS_DEFAULT_ARGS-when-installing.patch ];
|
patches = [ ./0001-Use-KDE_INSTALL_TARGETS_DEFAULT_ARGS-when-installing.patch ];
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,5 +8,4 @@ mkDerivation {
|
||||||
name = "kwrited";
|
name = "kwrited";
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [ kcoreaddons kdbusaddons ki18n knotifications kpty qtbase ];
|
buildInputs = [ kcoreaddons kdbusaddons ki18n knotifications kpty qtbase ];
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,9 +6,6 @@
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "libkscreen";
|
name = "libkscreen";
|
||||||
meta = {
|
|
||||||
broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
};
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [ kwayland libXrandr qtx11extras ];
|
buildInputs = [ kwayland libXrandr qtx11extras ];
|
||||||
outputs = [ "out" "dev" ];
|
outputs = [ "out" "dev" ];
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "libksysguard";
|
name = "libksysguard";
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.14.0";
|
|
||||||
patches = [
|
patches = [
|
||||||
./0001-qdiriterator-follow-symlinks.patch
|
./0001-qdiriterator-follow-symlinks.patch
|
||||||
];
|
];
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "milou";
|
name = "milou";
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
kcoreaddons kdeclarative ki18n kitemmodels krunner kservice plasma-framework
|
kcoreaddons kdeclarative ki18n kitemmodels krunner kservice plasma-framework
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "plasma-nm";
|
name = "plasma-nm";
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules kdoctools qttools ];
|
nativeBuildInputs = [ extra-cmake-modules kdoctools qttools ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
kdeclarative kdelibs4support ki18n kio kwindowsystem plasma-framework
|
kdeclarative kdelibs4support ki18n kio kwindowsystem plasma-framework
|
||||||
|
|
|
@ -17,5 +17,4 @@ mkDerivation {
|
||||||
|
|
||||||
qtbase qtdeclarative
|
qtbase qtdeclarative
|
||||||
];
|
];
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "plasma-systemmonitor";
|
name = "plasma-systemmonitor";
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
qtquickcontrols2
|
qtquickcontrols2
|
||||||
|
|
|
@ -12,5 +12,4 @@ mkDerivation {
|
||||||
knotifications kwindowsystem polkit-qt
|
knotifications kwindowsystem polkit-qt
|
||||||
];
|
];
|
||||||
outputs = [ "out" "dev" ];
|
outputs = [ "out" "dev" ];
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "sddm-kcm";
|
name = "sddm-kcm";
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules shared-mime-info ];
|
nativeBuildInputs = [ extra-cmake-modules shared-mime-info ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
libpthreadstubs
|
libpthreadstubs
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "xdg-desktop-portal-kde";
|
name = "xdg-desktop-portal-kde";
|
||||||
meta.broken = lib.versionOlder qtbase.version "5.15.0";
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules gettext kdoctools ];
|
nativeBuildInputs = [ extra-cmake-modules gettext kdoctools ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
cups epoxy mesa pcre pipewire wayland wayland-protocols
|
cups epoxy mesa pcre pipewire wayland wayland-protocols
|
||||||
|
|
|
@ -45,6 +45,7 @@ import ./default.nix {
|
||||||
aarch64-unknown-linux-gnu = "1db7a4fbddc68cd29eb9bca9fa7d0d2d9e3d59ede7ddaad66222fb4336a6bacf";
|
aarch64-unknown-linux-gnu = "1db7a4fbddc68cd29eb9bca9fa7d0d2d9e3d59ede7ddaad66222fb4336a6bacf";
|
||||||
aarch64-unknown-linux-musl = "adcc6c76a8967bacb6687b565d3cf739e35fde066b03edb745b05b52fa8b5b36";
|
aarch64-unknown-linux-musl = "adcc6c76a8967bacb6687b565d3cf739e35fde066b03edb745b05b52fa8b5b36";
|
||||||
x86_64-apple-darwin = "1bf5a7ecf6468ce1bf9fe49c8083b3f648b40c16fbfb7539d106fe28eb0e792e";
|
x86_64-apple-darwin = "1bf5a7ecf6468ce1bf9fe49c8083b3f648b40c16fbfb7539d106fe28eb0e792e";
|
||||||
|
aarch64-apple-darwin = "1ed91a867e7b86cc4bc84c0838240f1c25acd007100ec9f7a14c4873e4b56561";
|
||||||
powerpc64le-unknown-linux-gnu = "e0472589d3f9ba7ebf27f033af320e0d5cfb70222955bd8ed73ce2c9a70ae535";
|
powerpc64le-unknown-linux-gnu = "e0472589d3f9ba7ebf27f033af320e0d5cfb70222955bd8ed73ce2c9a70ae535";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ PLATFORMS=(
|
||||||
aarch64-unknown-linux-gnu
|
aarch64-unknown-linux-gnu
|
||||||
aarch64-unknown-linux-musl
|
aarch64-unknown-linux-musl
|
||||||
x86_64-apple-darwin
|
x86_64-apple-darwin
|
||||||
|
aarch64-apple-darwin
|
||||||
powerpc64le-unknown-linux-gnu
|
powerpc64le-unknown-linux-gnu
|
||||||
)
|
)
|
||||||
BASEURL=https://static.rust-lang.org/dist
|
BASEURL=https://static.rust-lang.org/dist
|
||||||
|
|
|
@ -0,0 +1,390 @@
|
||||||
|
From e7b005c05dbdbce967a409abd71641281a8604bf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Senthil Kumaran <senthil@uthcode.com>
|
||||||
|
Date: Mon, 15 Feb 2021 11:16:43 -0800
|
||||||
|
Subject: [PATCH 24/26] [3.6] bpo-42967: only use '&' as a query string
|
||||||
|
separator (GH-24297) (GH-24532)
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
bpo-42967: [security] Address a web cache-poisoning issue reported in
|
||||||
|
urllib.parse.parse_qsl().
|
||||||
|
|
||||||
|
urllib.parse will only us "&" as query string separator by default
|
||||||
|
instead of both ";" and "&" as allowed in earlier versions. An optional
|
||||||
|
argument seperator with default value "&" is added to specify the
|
||||||
|
separator.
|
||||||
|
|
||||||
|
Co-authored-by: Éric Araujo <merwok@netwok.org>
|
||||||
|
Co-authored-by: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
|
||||||
|
Co-authored-by: Adam Goldschmidt <adamgold7@gmail.com>
|
||||||
|
|
||||||
|
Rebased for Python 2.7 by Michał Górny
|
||||||
|
---
|
||||||
|
Doc/library/cgi.rst | 7 +++-
|
||||||
|
Doc/library/urlparse.rst | 23 ++++++++++-
|
||||||
|
Lib/cgi.py | 20 +++++++---
|
||||||
|
Lib/test/test_cgi.py | 29 +++++++++++---
|
||||||
|
Lib/test/test_urlparse.py | 38 +++++++++----------
|
||||||
|
Lib/urlparse.py | 22 ++++++++---
|
||||||
|
.../2021-02-14-15-59-16.bpo-42967.YApqDS.rst | 1 +
|
||||||
|
7 files changed, 100 insertions(+), 40 deletions(-)
|
||||||
|
create mode 100644 Misc/NEWS.d/next/Security/2021-02-14-15-59-16.bpo-42967.YApqDS.rst
|
||||||
|
|
||||||
|
diff --git a/Doc/library/cgi.rst b/Doc/library/cgi.rst
|
||||||
|
index ecd62c8c01..b85cdd8b61 100644
|
||||||
|
--- a/Doc/library/cgi.rst
|
||||||
|
+++ b/Doc/library/cgi.rst
|
||||||
|
@@ -285,10 +285,10 @@ These are useful if you want more control, or if you want to employ some of the
|
||||||
|
algorithms implemented in this module in other circumstances.
|
||||||
|
|
||||||
|
|
||||||
|
-.. function:: parse(fp[, environ[, keep_blank_values[, strict_parsing]]])
|
||||||
|
+.. function:: parse(fp[, environ[, keep_blank_values[, strict_parsing]]], separator="&")
|
||||||
|
|
||||||
|
Parse a query in the environment or from a file (the file defaults to
|
||||||
|
- ``sys.stdin`` and environment defaults to ``os.environ``). The *keep_blank_values* and *strict_parsing* parameters are
|
||||||
|
+ ``sys.stdin`` and environment defaults to ``os.environ``). The *keep_blank_values*, *strict_parsing* and *separator* parameters are
|
||||||
|
passed to :func:`urlparse.parse_qs` unchanged.
|
||||||
|
|
||||||
|
|
||||||
|
@@ -316,6 +316,9 @@ algorithms implemented in this module in other circumstances.
|
||||||
|
Note that this does not parse nested multipart parts --- use
|
||||||
|
:class:`FieldStorage` for that.
|
||||||
|
|
||||||
|
+ .. versionchanged:: 3.6.13
|
||||||
|
+ Added the *separator* parameter.
|
||||||
|
+
|
||||||
|
|
||||||
|
.. function:: parse_header(string)
|
||||||
|
|
||||||
|
diff --git a/Doc/library/urlparse.rst b/Doc/library/urlparse.rst
|
||||||
|
index 0989c88c30..2f8e4c5a44 100644
|
||||||
|
--- a/Doc/library/urlparse.rst
|
||||||
|
+++ b/Doc/library/urlparse.rst
|
||||||
|
@@ -136,7 +136,7 @@ The :mod:`urlparse` module defines the following functions:
|
||||||
|
now raise :exc:`ValueError`.
|
||||||
|
|
||||||
|
|
||||||
|
-.. function:: parse_qs(qs[, keep_blank_values[, strict_parsing[, max_num_fields]]])
|
||||||
|
+.. function:: parse_qs(qs[, keep_blank_values[, strict_parsing[, max_num_fields]]], separator='&')
|
||||||
|
|
||||||
|
Parse a query string given as a string argument (data of type
|
||||||
|
:mimetype:`application/x-www-form-urlencoded`). Data are returned as a
|
||||||
|
@@ -157,6 +157,9 @@ The :mod:`urlparse` module defines the following functions:
|
||||||
|
read. If set, then throws a :exc:`ValueError` if there are more than
|
||||||
|
*max_num_fields* fields read.
|
||||||
|
|
||||||
|
+ The optional argument *separator* is the symbol to use for separating the
|
||||||
|
+ query arguments. It defaults to ``&``.
|
||||||
|
+
|
||||||
|
Use the :func:`urllib.urlencode` function to convert such dictionaries into
|
||||||
|
query strings.
|
||||||
|
|
||||||
|
@@ -166,7 +169,14 @@ The :mod:`urlparse` module defines the following functions:
|
||||||
|
.. versionchanged:: 2.7.16
|
||||||
|
Added *max_num_fields* parameter.
|
||||||
|
|
||||||
|
-.. function:: parse_qsl(qs[, keep_blank_values[, strict_parsing[, max_num_fields]]])
|
||||||
|
+ .. versionchanged:: 2.7.18-gentoo
|
||||||
|
+ Added *separator* parameter with the default value of ``&``. Earlier
|
||||||
|
+ Python versions allowed using both ``;`` and ``&`` as query parameter
|
||||||
|
+ separator. This has been changed to allow only a single separator key,
|
||||||
|
+ with ``&`` as the default separator.
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+.. function:: parse_qsl(qs[, keep_blank_values[, strict_parsing[, max_num_fields]]], separator='&')
|
||||||
|
|
||||||
|
Parse a query string given as a string argument (data of type
|
||||||
|
:mimetype:`application/x-www-form-urlencoded`). Data are returned as a list of
|
||||||
|
@@ -186,6 +196,9 @@ The :mod:`urlparse` module defines the following functions:
|
||||||
|
read. If set, then throws a :exc:`ValueError` if there are more than
|
||||||
|
*max_num_fields* fields read.
|
||||||
|
|
||||||
|
+ The optional argument *separator* is the symbol to use for separating the
|
||||||
|
+ query arguments. It defaults to ``&``.
|
||||||
|
+
|
||||||
|
Use the :func:`urllib.urlencode` function to convert such lists of pairs into
|
||||||
|
query strings.
|
||||||
|
|
||||||
|
@@ -195,6 +208,12 @@ The :mod:`urlparse` module defines the following functions:
|
||||||
|
.. versionchanged:: 2.7.16
|
||||||
|
Added *max_num_fields* parameter.
|
||||||
|
|
||||||
|
+ .. versionchanged:: 2.7.18-gentoo
|
||||||
|
+ Added *separator* parameter with the default value of ``&``. Earlier
|
||||||
|
+ Python versions allowed using both ``;`` and ``&`` as query parameter
|
||||||
|
+ separator. This has been changed to allow only a single separator key,
|
||||||
|
+ with ``&`` as the default separator.
|
||||||
|
+
|
||||||
|
.. function:: urlunparse(parts)
|
||||||
|
|
||||||
|
Construct a URL from a tuple as returned by ``urlparse()``. The *parts* argument
|
||||||
|
diff --git a/Lib/cgi.py b/Lib/cgi.py
|
||||||
|
index 5b903e0347..9d0848b6b1 100755
|
||||||
|
--- a/Lib/cgi.py
|
||||||
|
+++ b/Lib/cgi.py
|
||||||
|
@@ -121,7 +121,8 @@ log = initlog # The current logging function
|
||||||
|
# 0 ==> unlimited input
|
||||||
|
maxlen = 0
|
||||||
|
|
||||||
|
-def parse(fp=None, environ=os.environ, keep_blank_values=0, strict_parsing=0):
|
||||||
|
+def parse(fp=None, environ=os.environ, keep_blank_values=0,
|
||||||
|
+ strict_parsing=0, separator='&'):
|
||||||
|
"""Parse a query in the environment or from a file (default stdin)
|
||||||
|
|
||||||
|
Arguments, all optional:
|
||||||
|
@@ -140,6 +141,9 @@ def parse(fp=None, environ=os.environ, keep_blank_values=0, strict_parsing=0):
|
||||||
|
strict_parsing: flag indicating what to do with parsing errors.
|
||||||
|
If false (the default), errors are silently ignored.
|
||||||
|
If true, errors raise a ValueError exception.
|
||||||
|
+
|
||||||
|
+ separator: str. The symbol to use for separating the query arguments.
|
||||||
|
+ Defaults to &.
|
||||||
|
"""
|
||||||
|
if fp is None:
|
||||||
|
fp = sys.stdin
|
||||||
|
@@ -171,7 +175,8 @@ def parse(fp=None, environ=os.environ, keep_blank_values=0, strict_parsing=0):
|
||||||
|
else:
|
||||||
|
qs = ""
|
||||||
|
environ['QUERY_STRING'] = qs # XXX Shouldn't, really
|
||||||
|
- return urlparse.parse_qs(qs, keep_blank_values, strict_parsing)
|
||||||
|
+ return urlparse.parse_qs(qs, keep_blank_values, strict_parsing,
|
||||||
|
+ separator=separator)
|
||||||
|
|
||||||
|
|
||||||
|
# parse query string function called from urlparse,
|
||||||
|
@@ -395,7 +400,7 @@ class FieldStorage:
|
||||||
|
|
||||||
|
def __init__(self, fp=None, headers=None, outerboundary="",
|
||||||
|
environ=os.environ, keep_blank_values=0, strict_parsing=0,
|
||||||
|
- max_num_fields=None):
|
||||||
|
+ max_num_fields=None, separator='&'):
|
||||||
|
"""Constructor. Read multipart/* until last part.
|
||||||
|
|
||||||
|
Arguments, all optional:
|
||||||
|
@@ -430,6 +435,7 @@ class FieldStorage:
|
||||||
|
self.keep_blank_values = keep_blank_values
|
||||||
|
self.strict_parsing = strict_parsing
|
||||||
|
self.max_num_fields = max_num_fields
|
||||||
|
+ self.separator = separator
|
||||||
|
if 'REQUEST_METHOD' in environ:
|
||||||
|
method = environ['REQUEST_METHOD'].upper()
|
||||||
|
self.qs_on_post = None
|
||||||
|
@@ -613,7 +619,8 @@ class FieldStorage:
|
||||||
|
if self.qs_on_post:
|
||||||
|
qs += '&' + self.qs_on_post
|
||||||
|
query = urlparse.parse_qsl(qs, self.keep_blank_values,
|
||||||
|
- self.strict_parsing, self.max_num_fields)
|
||||||
|
+ self.strict_parsing, self.max_num_fields,
|
||||||
|
+ separator=self.separator)
|
||||||
|
self.list = [MiniFieldStorage(key, value) for key, value in query]
|
||||||
|
self.skip_lines()
|
||||||
|
|
||||||
|
@@ -629,7 +636,8 @@ class FieldStorage:
|
||||||
|
query = urlparse.parse_qsl(self.qs_on_post,
|
||||||
|
self.keep_blank_values,
|
||||||
|
self.strict_parsing,
|
||||||
|
- self.max_num_fields)
|
||||||
|
+ self.max_num_fields,
|
||||||
|
+ separator=self.separator)
|
||||||
|
self.list.extend(MiniFieldStorage(key, value)
|
||||||
|
for key, value in query)
|
||||||
|
FieldStorageClass = None
|
||||||
|
@@ -649,7 +657,7 @@ class FieldStorage:
|
||||||
|
headers = rfc822.Message(self.fp)
|
||||||
|
part = klass(self.fp, headers, ib,
|
||||||
|
environ, keep_blank_values, strict_parsing,
|
||||||
|
- max_num_fields)
|
||||||
|
+ max_num_fields, separator=self.separator)
|
||||||
|
|
||||||
|
if max_num_fields is not None:
|
||||||
|
max_num_fields -= 1
|
||||||
|
diff --git a/Lib/test/test_cgi.py b/Lib/test/test_cgi.py
|
||||||
|
index 743c2afbd4..f414faa23b 100644
|
||||||
|
--- a/Lib/test/test_cgi.py
|
||||||
|
+++ b/Lib/test/test_cgi.py
|
||||||
|
@@ -61,12 +61,9 @@ parse_strict_test_cases = [
|
||||||
|
("", ValueError("bad query field: ''")),
|
||||||
|
("&", ValueError("bad query field: ''")),
|
||||||
|
("&&", ValueError("bad query field: ''")),
|
||||||
|
- (";", ValueError("bad query field: ''")),
|
||||||
|
- (";&;", ValueError("bad query field: ''")),
|
||||||
|
# Should the next few really be valid?
|
||||||
|
("=", {}),
|
||||||
|
("=&=", {}),
|
||||||
|
- ("=;=", {}),
|
||||||
|
# This rest seem to make sense
|
||||||
|
("=a", {'': ['a']}),
|
||||||
|
("&=a", ValueError("bad query field: ''")),
|
||||||
|
@@ -81,8 +78,6 @@ parse_strict_test_cases = [
|
||||||
|
("a=a+b&b=b+c", {'a': ['a b'], 'b': ['b c']}),
|
||||||
|
("a=a+b&a=b+a", {'a': ['a b', 'b a']}),
|
||||||
|
("x=1&y=2.0&z=2-3.%2b0", {'x': ['1'], 'y': ['2.0'], 'z': ['2-3.+0']}),
|
||||||
|
- ("x=1;y=2.0&z=2-3.%2b0", {'x': ['1'], 'y': ['2.0'], 'z': ['2-3.+0']}),
|
||||||
|
- ("x=1;y=2.0;z=2-3.%2b0", {'x': ['1'], 'y': ['2.0'], 'z': ['2-3.+0']}),
|
||||||
|
("Hbc5161168c542333633315dee1182227:key_store_seqid=400006&cuyer=r&view=bustomer&order_id=0bb2e248638833d48cb7fed300000f1b&expire=964546263&lobale=en-US&kid=130003.300038&ss=env",
|
||||||
|
{'Hbc5161168c542333633315dee1182227:key_store_seqid': ['400006'],
|
||||||
|
'cuyer': ['r'],
|
||||||
|
@@ -188,6 +183,30 @@ class CgiTests(unittest.TestCase):
|
||||||
|
self.assertEqual(expect[k], v)
|
||||||
|
self.assertItemsEqual(expect.values(), d.values())
|
||||||
|
|
||||||
|
+ def test_separator(self):
|
||||||
|
+ parse_semicolon = [
|
||||||
|
+ ("x=1;y=2.0", {'x': ['1'], 'y': ['2.0']}),
|
||||||
|
+ ("x=1;y=2.0;z=2-3.%2b0", {'x': ['1'], 'y': ['2.0'], 'z': ['2-3.+0']}),
|
||||||
|
+ (";", ValueError("bad query field: ''")),
|
||||||
|
+ (";;", ValueError("bad query field: ''")),
|
||||||
|
+ ("=;a", ValueError("bad query field: 'a'")),
|
||||||
|
+ (";b=a", ValueError("bad query field: ''")),
|
||||||
|
+ ("b;=a", ValueError("bad query field: 'b'")),
|
||||||
|
+ ("a=a+b;b=b+c", {'a': ['a b'], 'b': ['b c']}),
|
||||||
|
+ ("a=a+b;a=b+a", {'a': ['a b', 'b a']}),
|
||||||
|
+ ]
|
||||||
|
+ for orig, expect in parse_semicolon:
|
||||||
|
+ env = {'QUERY_STRING': orig}
|
||||||
|
+ fs = cgi.FieldStorage(separator=';', environ=env)
|
||||||
|
+ if isinstance(expect, dict):
|
||||||
|
+ for key in expect.keys():
|
||||||
|
+ expect_val = expect[key]
|
||||||
|
+ self.assertIn(key, fs)
|
||||||
|
+ if len(expect_val) > 1:
|
||||||
|
+ self.assertEqual(fs.getvalue(key), expect_val)
|
||||||
|
+ else:
|
||||||
|
+ self.assertEqual(fs.getvalue(key), expect_val[0])
|
||||||
|
+
|
||||||
|
def test_log(self):
|
||||||
|
cgi.log("Testing")
|
||||||
|
|
||||||
|
diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py
|
||||||
|
index 86c4a0595c..0b2107339a 100644
|
||||||
|
--- a/Lib/test/test_urlparse.py
|
||||||
|
+++ b/Lib/test/test_urlparse.py
|
||||||
|
@@ -24,16 +24,20 @@ parse_qsl_test_cases = [
|
||||||
|
("&a=b", [('a', 'b')]),
|
||||||
|
("a=a+b&b=b+c", [('a', 'a b'), ('b', 'b c')]),
|
||||||
|
("a=1&a=2", [('a', '1'), ('a', '2')]),
|
||||||
|
- (";", []),
|
||||||
|
- (";;", []),
|
||||||
|
- (";a=b", [('a', 'b')]),
|
||||||
|
- ("a=a+b;b=b+c", [('a', 'a b'), ('b', 'b c')]),
|
||||||
|
- ("a=1;a=2", [('a', '1'), ('a', '2')]),
|
||||||
|
- (b";", []),
|
||||||
|
- (b";;", []),
|
||||||
|
- (b";a=b", [(b'a', b'b')]),
|
||||||
|
- (b"a=a+b;b=b+c", [(b'a', b'a b'), (b'b', b'b c')]),
|
||||||
|
- (b"a=1;a=2", [(b'a', b'1'), (b'a', b'2')]),
|
||||||
|
+ (b"", []),
|
||||||
|
+ (b"&", []),
|
||||||
|
+ (b"&&", []),
|
||||||
|
+ (b"=", [(b'', b'')]),
|
||||||
|
+ (b"=a", [(b'', b'a')]),
|
||||||
|
+ (b"a", [(b'a', b'')]),
|
||||||
|
+ (b"a=", [(b'a', b'')]),
|
||||||
|
+ (b"&a=b", [(b'a', b'b')]),
|
||||||
|
+ (b"a=a+b&b=b+c", [(b'a', b'a b'), (b'b', b'b c')]),
|
||||||
|
+ (b"a=1&a=2", [(b'a', b'1'), (b'a', b'2')]),
|
||||||
|
+ (";a=b", [(';a', 'b')]),
|
||||||
|
+ ("a=a+b;b=b+c", [('a', 'a b;b=b c')]),
|
||||||
|
+ (b";a=b", [(b';a', b'b')]),
|
||||||
|
+ (b"a=a+b;b=b+c", [(b'a', b'a b;b=b c')]),
|
||||||
|
]
|
||||||
|
|
||||||
|
parse_qs_test_cases = [
|
||||||
|
@@ -57,16 +61,10 @@ parse_qs_test_cases = [
|
||||||
|
(b"&a=b", {b'a': [b'b']}),
|
||||||
|
(b"a=a+b&b=b+c", {b'a': [b'a b'], b'b': [b'b c']}),
|
||||||
|
(b"a=1&a=2", {b'a': [b'1', b'2']}),
|
||||||
|
- (";", {}),
|
||||||
|
- (";;", {}),
|
||||||
|
- (";a=b", {'a': ['b']}),
|
||||||
|
- ("a=a+b;b=b+c", {'a': ['a b'], 'b': ['b c']}),
|
||||||
|
- ("a=1;a=2", {'a': ['1', '2']}),
|
||||||
|
- (b";", {}),
|
||||||
|
- (b";;", {}),
|
||||||
|
- (b";a=b", {b'a': [b'b']}),
|
||||||
|
- (b"a=a+b;b=b+c", {b'a': [b'a b'], b'b': [b'b c']}),
|
||||||
|
- (b"a=1;a=2", {b'a': [b'1', b'2']}),
|
||||||
|
+ (";a=b", {';a': ['b']}),
|
||||||
|
+ ("a=a+b;b=b+c", {'a': ['a b;b=b c']}),
|
||||||
|
+ (b";a=b", {b';a': [b'b']}),
|
||||||
|
+ (b"a=a+b;b=b+c", {b'a':[ b'a b;b=b c']}),
|
||||||
|
]
|
||||||
|
|
||||||
|
class UrlParseTestCase(unittest.TestCase):
|
||||||
|
diff --git a/Lib/urlparse.py b/Lib/urlparse.py
|
||||||
|
index 798b467b60..6c32727fce 100644
|
||||||
|
--- a/Lib/urlparse.py
|
||||||
|
+++ b/Lib/urlparse.py
|
||||||
|
@@ -382,7 +382,8 @@ def unquote(s):
|
||||||
|
append(item)
|
||||||
|
return ''.join(res)
|
||||||
|
|
||||||
|
-def parse_qs(qs, keep_blank_values=0, strict_parsing=0, max_num_fields=None):
|
||||||
|
+def parse_qs(qs, keep_blank_values=0, strict_parsing=0, max_num_fields=None,
|
||||||
|
+ separator='&'):
|
||||||
|
"""Parse a query given as a string argument.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
@@ -402,17 +403,22 @@ def parse_qs(qs, keep_blank_values=0, strict_parsing=0, max_num_fields=None):
|
||||||
|
|
||||||
|
max_num_fields: int. If set, then throws a ValueError if there
|
||||||
|
are more than n fields read by parse_qsl().
|
||||||
|
+
|
||||||
|
+ separator: str. The symbol to use for separating the query arguments.
|
||||||
|
+ Defaults to &.
|
||||||
|
+
|
||||||
|
"""
|
||||||
|
dict = {}
|
||||||
|
for name, value in parse_qsl(qs, keep_blank_values, strict_parsing,
|
||||||
|
- max_num_fields):
|
||||||
|
+ max_num_fields, separator=separator):
|
||||||
|
if name in dict:
|
||||||
|
dict[name].append(value)
|
||||||
|
else:
|
||||||
|
dict[name] = [value]
|
||||||
|
return dict
|
||||||
|
|
||||||
|
-def parse_qsl(qs, keep_blank_values=0, strict_parsing=0, max_num_fields=None):
|
||||||
|
+def parse_qsl(qs, keep_blank_values=0, strict_parsing=0, max_num_fields=None,
|
||||||
|
+ separator='&'):
|
||||||
|
"""Parse a query given as a string argument.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
@@ -432,17 +438,23 @@ def parse_qsl(qs, keep_blank_values=0, strict_parsing=0, max_num_fields=None):
|
||||||
|
max_num_fields: int. If set, then throws a ValueError if there
|
||||||
|
are more than n fields read by parse_qsl().
|
||||||
|
|
||||||
|
+ separator: str. The symbol to use for separating the query arguments.
|
||||||
|
+ Defaults to &.
|
||||||
|
+
|
||||||
|
Returns a list, as G-d intended.
|
||||||
|
"""
|
||||||
|
+ if not separator or (not isinstance(separator, (str, bytes))):
|
||||||
|
+ raise ValueError("Separator must be of type string or bytes.")
|
||||||
|
+
|
||||||
|
# If max_num_fields is defined then check that the number of fields
|
||||||
|
# is less than max_num_fields. This prevents a memory exhaustion DOS
|
||||||
|
# attack via post bodies with many fields.
|
||||||
|
if max_num_fields is not None:
|
||||||
|
- num_fields = 1 + qs.count('&') + qs.count(';')
|
||||||
|
+ num_fields = 1 + qs.count(separator)
|
||||||
|
if max_num_fields < num_fields:
|
||||||
|
raise ValueError('Max number of fields exceeded')
|
||||||
|
|
||||||
|
- pairs = [s2 for s1 in qs.split('&') for s2 in s1.split(';')]
|
||||||
|
+ pairs = [s1 for s1 in qs.split(separator)]
|
||||||
|
r = []
|
||||||
|
for name_value in pairs:
|
||||||
|
if not name_value and not strict_parsing:
|
||||||
|
diff --git a/Misc/NEWS.d/next/Security/2021-02-14-15-59-16.bpo-42967.YApqDS.rst b/Misc/NEWS.d/next/Security/2021-02-14-15-59-16.bpo-42967.YApqDS.rst
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..f08489b414
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/Misc/NEWS.d/next/Security/2021-02-14-15-59-16.bpo-42967.YApqDS.rst
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+Fix web cache poisoning vulnerability by defaulting the query args separator to ``&``, and allowing the user to choose a custom separator.
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
|
@ -123,6 +123,8 @@ let
|
||||||
|
|
||||||
./CVE-2021-3177.patch
|
./CVE-2021-3177.patch
|
||||||
|
|
||||||
|
./CVE-2021-23336.patch
|
||||||
|
|
||||||
# The workaround is for unittests on Win64, which we don't support.
|
# The workaround is for unittests on Win64, which we don't support.
|
||||||
# It does break aarch64-darwin, which we do support. See:
|
# It does break aarch64-darwin, which we do support. See:
|
||||||
# * https://bugs.python.org/issue35523
|
# * https://bugs.python.org/issue35523
|
||||||
|
|
|
@ -69,12 +69,15 @@ with pkgs;
|
||||||
recursivePthLoader
|
recursivePthLoader
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
|
optionalExtensions = cond: as: if cond then as else [];
|
||||||
|
python2Extension = import ../../../top-level/python2-packages.nix;
|
||||||
|
extensions = lib.composeManyExtensions ((optionalExtensions (!self.isPy3k) [python2Extension]) ++ [ overrides ]);
|
||||||
in lib.makeScopeWithSplicing
|
in lib.makeScopeWithSplicing
|
||||||
pkgs.splicePackages
|
pkgs.splicePackages
|
||||||
pkgs.newScope
|
pkgs.newScope
|
||||||
otherSplices
|
otherSplices
|
||||||
keep
|
keep
|
||||||
(lib.extends overrides pythonPackagesFun))
|
(lib.extends extensions pythonPackagesFun))
|
||||||
{
|
{
|
||||||
overrides = packageOverrides;
|
overrides = packageOverrides;
|
||||||
};
|
};
|
||||||
|
@ -114,10 +117,10 @@ with pkgs;
|
||||||
sourceVersion = {
|
sourceVersion = {
|
||||||
major = "3";
|
major = "3";
|
||||||
minor = "8";
|
minor = "8";
|
||||||
patch = "8";
|
patch = "9";
|
||||||
suffix = "";
|
suffix = "";
|
||||||
};
|
};
|
||||||
sha256 = "fGZCSf935EPW6g5M8OWH6ukYyjxI0IHRkV/iofG8xcw=";
|
sha256 = "XjkfPsRdopVEGcqwvq79i+OIlepc4zV3w+wUlAxLlXI=";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -173,10 +176,10 @@ in {
|
||||||
sourceVersion = {
|
sourceVersion = {
|
||||||
major = "3";
|
major = "3";
|
||||||
minor = "9";
|
minor = "9";
|
||||||
patch = "2";
|
patch = "4";
|
||||||
suffix = "";
|
suffix = "";
|
||||||
};
|
};
|
||||||
sha256 = "PCA0xU+BFEj1FmaNzgnSQAigcWw6eU3YY5tTiMveJH0=";
|
sha256 = "Sw5mRKdvjfhkriSsUApRu/aL0Jj2oXPifTthzcqaoTQ=";
|
||||||
inherit (darwin) configd;
|
inherit (darwin) configd;
|
||||||
inherit passthruFun;
|
inherit passthruFun;
|
||||||
};
|
};
|
||||||
|
|
|
@ -104,11 +104,13 @@ else
|
||||||
let
|
let
|
||||||
inherit (python) stdenv;
|
inherit (python) stdenv;
|
||||||
|
|
||||||
|
name_ = name;
|
||||||
|
|
||||||
self = toPythonModule (stdenv.mkDerivation ((builtins.removeAttrs attrs [
|
self = toPythonModule (stdenv.mkDerivation ((builtins.removeAttrs attrs [
|
||||||
"disabled" "checkPhase" "checkInputs" "doCheck" "doInstallCheck" "dontWrapPythonPrograms" "catchConflicts" "format"
|
"disabled" "checkPhase" "checkInputs" "doCheck" "doInstallCheck" "dontWrapPythonPrograms" "catchConflicts" "format"
|
||||||
]) // {
|
]) // {
|
||||||
|
|
||||||
name = namePrefix + name;
|
name = namePrefix + name_;
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
python
|
python
|
||||||
|
|
|
@ -249,18 +249,18 @@ let
|
||||||
|
|
||||||
in {
|
in {
|
||||||
ruby_2_6 = generic {
|
ruby_2_6 = generic {
|
||||||
version = rubyVersion "2" "6" "6" "";
|
version = rubyVersion "2" "6" "7" "";
|
||||||
sha256 = {
|
sha256 = {
|
||||||
src = "1492x795qzgp3zhpl580kd1sdp50n5hfsmpbfhdsq2rnxwyi8jrn";
|
src = "17m9qxalwhk95dw1qhgxbvr3kkcxs3h86yirfg5mwj35gy5pw8p4";
|
||||||
git = "1jr9v99a7awssqmw7531afbx4a8i9x5yfqyffha545g7r4s7kj50";
|
git = "08gvknanwdfsaj3lmcv1bdqjf9lldphzi7gmlv3cfa8ligx2vbap";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
ruby_2_7 = generic {
|
ruby_2_7 = generic {
|
||||||
version = rubyVersion "2" "7" "2" "";
|
version = rubyVersion "2" "7" "3" "";
|
||||||
sha256 = {
|
sha256 = {
|
||||||
src = "1m63461mxi3fg4y3bspbgmb0ckbbb1ldgf9xi0piwkpfsk80cmvf";
|
src = "0f2kwn98n9h9hy1fd547s7d0a7ga8jjm4nh294bwiwnq65gaj9c9";
|
||||||
git = "0kbgznf1yprfp9645k31ra5f4757b7fichzi0hdg6nxkj90853s0";
|
git = "0vxg9w4dgpw2ig5snxmkahvzdp2yh71w8qm49g35d5hqdsql7yrx";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
{ patchSet, useRailsExpress, ops, patchLevel, fetchpatch }:
|
{ patchSet, useRailsExpress, ops, patchLevel, fetchpatch }:
|
||||||
|
|
||||||
{
|
{
|
||||||
"2.6.6" = ops useRailsExpress [
|
"2.6.7" = ops useRailsExpress [
|
||||||
"${patchSet}/patches/ruby/2.6/head/railsexpress/01-fix-broken-tests-caused-by-ad.patch"
|
"${patchSet}/patches/ruby/2.6/head/railsexpress/01-fix-broken-tests-caused-by-ad.patch"
|
||||||
"${patchSet}/patches/ruby/2.6/head/railsexpress/02-improve-gc-stats.patch"
|
"${patchSet}/patches/ruby/2.6/head/railsexpress/02-improve-gc-stats.patch"
|
||||||
"${patchSet}/patches/ruby/2.6/head/railsexpress/03-more-detailed-stacktrace.patch"
|
"${patchSet}/patches/ruby/2.6/head/railsexpress/03-more-detailed-stacktrace.patch"
|
||||||
];
|
];
|
||||||
"2.7.2" = ops useRailsExpress [
|
"2.7.3" = ops useRailsExpress [
|
||||||
"${patchSet}/patches/ruby/2.7/head/railsexpress/01-fix-broken-tests-caused-by-ad.patch"
|
"${patchSet}/patches/ruby/2.7/head/railsexpress/01-fix-broken-tests-caused-by-ad.patch"
|
||||||
"${patchSet}/patches/ruby/2.7/head/railsexpress/02-improve-gc-stats.patch"
|
"${patchSet}/patches/ruby/2.7/head/railsexpress/02-improve-gc-stats.patch"
|
||||||
"${patchSet}/patches/ruby/2.7/head/railsexpress/03-more-detailed-stacktrace.patch"
|
"${patchSet}/patches/ruby/2.7/head/railsexpress/03-more-detailed-stacktrace.patch"
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
, tracker
|
, tracker
|
||||||
, x11Support ? stdenv.isLinux
|
, x11Support ? stdenv.isLinux
|
||||||
, waylandSupport ? stdenv.isLinux
|
, waylandSupport ? stdenv.isLinux
|
||||||
, mesa
|
, libGL
|
||||||
, wayland
|
, wayland
|
||||||
, wayland-protocols
|
, wayland-protocols
|
||||||
, xineramaSupport ? stdenv.isLinux
|
, xineramaSupport ? stdenv.isLinux
|
||||||
|
@ -143,7 +143,7 @@ stdenv.mkDerivation rec {
|
||||||
# explicitly propagated, always needed
|
# explicitly propagated, always needed
|
||||||
Cocoa
|
Cocoa
|
||||||
] ++ lib.optionals waylandSupport [
|
] ++ lib.optionals waylandSupport [
|
||||||
mesa
|
libGL
|
||||||
wayland
|
wayland
|
||||||
wayland-protocols
|
wayland-protocols
|
||||||
] ++ lib.optionals xineramaSupport [
|
] ++ lib.optionals xineramaSupport [
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
, tracker
|
, tracker
|
||||||
, x11Support ? stdenv.isLinux
|
, x11Support ? stdenv.isLinux
|
||||||
, waylandSupport ? stdenv.isLinux
|
, waylandSupport ? stdenv.isLinux
|
||||||
, mesa
|
, libGL
|
||||||
, vulkan-loader
|
, vulkan-loader
|
||||||
, vulkan-headers
|
, vulkan-headers
|
||||||
, wayland
|
, wayland
|
||||||
|
@ -124,7 +124,7 @@ stdenv.mkDerivation rec {
|
||||||
] ++ lib.optionals trackerSupport [
|
] ++ lib.optionals trackerSupport [
|
||||||
tracker
|
tracker
|
||||||
] ++ lib.optionals waylandSupport [
|
] ++ lib.optionals waylandSupport [
|
||||||
mesa
|
libGL
|
||||||
wayland
|
wayland
|
||||||
wayland-protocols
|
wayland-protocols
|
||||||
] ++ lib.optionals xineramaSupport [
|
] ++ lib.optionals xineramaSupport [
|
||||||
|
|
|
@ -10,6 +10,10 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
buildInputs = [ gmp ];
|
buildInputs = [ gmp ];
|
||||||
|
|
||||||
|
configureFlags = [
|
||||||
|
"--with-gcc-arch=generic" # don't guess -march=/mtune=
|
||||||
|
];
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
{ mkDerivation, lib, extra-cmake-modules, qtbase }:
|
{ mkDerivation, extra-cmake-modules, qtbase }:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "attica";
|
name = "attica";
|
||||||
meta = {
|
|
||||||
maintainers = [ lib.maintainers.ttuegel ];
|
|
||||||
broken = builtins.compareVersions qtbase.version "5.14.0" < 0;
|
|
||||||
};
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [ qtbase ];
|
buildInputs = [ qtbase ];
|
||||||
outputs = [ "out" "dev" ];
|
outputs = [ "out" "dev" ];
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
mkDerivation, lib,
|
mkDerivation,
|
||||||
extra-cmake-modules,
|
extra-cmake-modules,
|
||||||
kauth, kconfig, kcoreaddons, kcrash, kdbusaddons, kfilemetadata, ki18n,
|
kauth, kconfig, kcoreaddons, kcrash, kdbusaddons, kfilemetadata, ki18n,
|
||||||
kidletime, kio, lmdb, qtbase, qtdeclarative, solid,
|
kidletime, kio, lmdb, qtbase, qtdeclarative, solid,
|
||||||
|
@ -7,7 +7,6 @@
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "baloo";
|
name = "baloo";
|
||||||
meta = { maintainers = [ lib.maintainers.ttuegel ]; };
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
kauth kconfig kcrash kdbusaddons ki18n kio kidletime lmdb qtdeclarative
|
kauth kconfig kcrash kdbusaddons ki18n kio kidletime lmdb qtdeclarative
|
||||||
|
|
|
@ -1,14 +1,10 @@
|
||||||
{ mkDerivation, lib
|
{ mkDerivation
|
||||||
, extra-cmake-modules
|
, extra-cmake-modules
|
||||||
, qtbase, qtdeclarative
|
, qtbase, qtdeclarative
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "bluez-qt";
|
name = "bluez-qt";
|
||||||
meta = {
|
|
||||||
maintainers = [ lib.maintainers.ttuegel ];
|
|
||||||
broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
|
|
||||||
};
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [ qtdeclarative ];
|
buildInputs = [ qtdeclarative ];
|
||||||
propagatedBuildInputs = [ qtbase ];
|
propagatedBuildInputs = [ qtbase ];
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
{ mkDerivation, lib, extra-cmake-modules, gtk3, qtsvg, hicolor-icon-theme }:
|
{ mkDerivation, extra-cmake-modules, gtk3, qtsvg, hicolor-icon-theme }:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "breeze-icons";
|
name = "breeze-icons";
|
||||||
meta = { maintainers = [ lib.maintainers.ttuegel ]; };
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules gtk3 ];
|
nativeBuildInputs = [ extra-cmake-modules gtk3 ];
|
||||||
buildInputs = [ qtsvg ];
|
buildInputs = [ qtsvg ];
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
|
|
@ -28,6 +28,13 @@ existing packages here and modify it as necessary.
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
||||||
|
minQtVersion = "5.14";
|
||||||
|
broken = lib.versionOlder libsForQt5.qtbase.version minQtVersion;
|
||||||
|
maintainers = with lib.maintainers; [ ttuegel nyanloutre ];
|
||||||
|
license = with lib.licenses; [
|
||||||
|
lgpl21Plus lgpl3Plus bsd2 mit gpl2Plus gpl3Plus fdl12
|
||||||
|
];
|
||||||
|
|
||||||
srcs = import ./srcs.nix {
|
srcs = import ./srcs.nix {
|
||||||
inherit fetchurl;
|
inherit fetchurl;
|
||||||
mirror = "mirror://kde";
|
mirror = "mirror://kde";
|
||||||
|
@ -72,14 +79,15 @@ let
|
||||||
defaultSetupHook = if hasSeparateDev then propagateBin else null;
|
defaultSetupHook = if hasSeparateDev then propagateBin else null;
|
||||||
setupHook = args.setupHook or defaultSetupHook;
|
setupHook = args.setupHook or defaultSetupHook;
|
||||||
|
|
||||||
meta = {
|
meta =
|
||||||
homepage = "http://www.kde.org";
|
let meta = args.meta or {}; in
|
||||||
license = with lib.licenses; [
|
meta // {
|
||||||
lgpl21Plus lgpl3Plus bsd2 mit gpl2Plus gpl3Plus fdl12
|
homepage = meta.homepage or "http://www.kde.org";
|
||||||
];
|
license = meta.license or license;
|
||||||
maintainers = with lib.maintainers; [ ttuegel nyanloutre ];
|
maintainers = (meta.maintainers or []) ++ maintainers;
|
||||||
platforms = lib.platforms.linux;
|
platforms = meta.platforms or lib.platforms.linux;
|
||||||
} // (args.meta or {});
|
broken = meta.broken or broken;
|
||||||
|
};
|
||||||
|
|
||||||
in mkDerivation (args // {
|
in mkDerivation (args // {
|
||||||
name = "${name}-${version}";
|
name = "${name}-${version}";
|
||||||
|
@ -158,7 +166,7 @@ let
|
||||||
kiconthemes = callPackage ./kiconthemes {};
|
kiconthemes = callPackage ./kiconthemes {};
|
||||||
kinit = callPackage ./kinit {};
|
kinit = callPackage ./kinit {};
|
||||||
kio = callPackage ./kio {};
|
kio = callPackage ./kio {};
|
||||||
knewstuff = callPackage ./knewstuff.nix {};
|
knewstuff = callPackage ./knewstuff {};
|
||||||
knotifyconfig = callPackage ./knotifyconfig.nix {};
|
knotifyconfig = callPackage ./knotifyconfig.nix {};
|
||||||
kparts = callPackage ./kparts.nix {};
|
kparts = callPackage ./kparts.nix {};
|
||||||
kpeople = callPackage ./kpeople.nix {};
|
kpeople = callPackage ./kpeople.nix {};
|
||||||
|
|
|
@ -17,6 +17,5 @@ mkDerivation {
|
||||||
platforms = platforms.linux ++ platforms.darwin;
|
platforms = platforms.linux ++ platforms.darwin;
|
||||||
homepage = "http://www.kde.org";
|
homepage = "http://www.kde.org";
|
||||||
license = licenses.bsd2;
|
license = licenses.bsd2;
|
||||||
maintainers = [ maintainers.ttuegel ];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
WGET_ARGS=( https://download.kde.org/stable/frameworks/5.79/ -A '*.tar.xz' )
|
WGET_ARGS=( https://download.kde.org/stable/frameworks/5.80/ -A '*.tar.xz' )
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
mkDerivation, lib,
|
mkDerivation,
|
||||||
extra-cmake-modules,
|
extra-cmake-modules,
|
||||||
kbookmarks, kcompletion, kconfig, kconfigwidgets, ki18n, kiconthemes, kio,
|
kbookmarks, kcompletion, kconfig, kconfigwidgets, ki18n, kiconthemes, kio,
|
||||||
knewstuff, knotifications, kpackage, kwidgetsaddons, libXcursor, qtx11extras
|
knewstuff, knotifications, kpackage, kwidgetsaddons, libXcursor, qtx11extras
|
||||||
|
@ -7,7 +7,6 @@
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "frameworkintegration";
|
name = "frameworkintegration";
|
||||||
meta = { maintainers = [ lib.maintainers.ttuegel ]; };
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
kbookmarks kcompletion kconfig ki18n kio knewstuff knotifications kpackage
|
kbookmarks kcompletion kconfig ki18n kio knewstuff knotifications kpackage
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
{
|
{
|
||||||
mkDerivation, lib,
|
mkDerivation,
|
||||||
extra-cmake-modules,
|
extra-cmake-modules,
|
||||||
boost, kactivities, kconfig, qtbase,
|
boost, kactivities, kconfig, qtbase,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "kactivities-stats";
|
name = "kactivities-stats";
|
||||||
meta = { maintainers = [ lib.maintainers.ttuegel ]; };
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [ boost kactivities kconfig ];
|
buildInputs = [ boost kactivities kconfig ];
|
||||||
propagatedBuildInputs = [ qtbase ];
|
propagatedBuildInputs = [ qtbase ];
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
{
|
{
|
||||||
mkDerivation, lib,
|
mkDerivation,
|
||||||
extra-cmake-modules,
|
extra-cmake-modules,
|
||||||
boost, kconfig, kcoreaddons, kio, kwindowsystem, qtbase, qtdeclarative,
|
boost, kconfig, kcoreaddons, kio, kwindowsystem, qtbase, qtdeclarative,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "kactivities";
|
name = "kactivities";
|
||||||
meta = { maintainers = [ lib.maintainers.ttuegel ]; };
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
boost kconfig kcoreaddons kio kwindowsystem qtdeclarative
|
boost kconfig kcoreaddons kio kwindowsystem qtdeclarative
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "kapidox";
|
name = "kapidox";
|
||||||
meta = { maintainers = [ lib.maintainers.ttuegel ]; };
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules python3 python3.pkgs.setuptools ];
|
nativeBuildInputs = [ extra-cmake-modules python3 python3.pkgs.setuptools ];
|
||||||
postFixup = ''
|
postFixup = ''
|
||||||
moveToOutput bin $bin
|
moveToOutput bin $bin
|
||||||
|
|
|
@ -1,15 +1,11 @@
|
||||||
{
|
{
|
||||||
mkDerivation, lib,
|
mkDerivation,
|
||||||
extra-cmake-modules,
|
extra-cmake-modules,
|
||||||
bzip2, xz, qtbase, zlib,
|
bzip2, xz, qtbase, zlib,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "karchive";
|
name = "karchive";
|
||||||
meta = {
|
|
||||||
maintainers = [ lib.maintainers.ttuegel ];
|
|
||||||
broken = builtins.compareVersions qtbase.version "5.14.0" < 0;
|
|
||||||
};
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [ bzip2 xz zlib ];
|
buildInputs = [ bzip2 xz zlib ];
|
||||||
propagatedBuildInputs = [ qtbase ];
|
propagatedBuildInputs = [ qtbase ];
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
{
|
{
|
||||||
mkDerivation, lib, propagate,
|
mkDerivation, propagate,
|
||||||
extra-cmake-modules, kcoreaddons, polkit-qt, qttools
|
extra-cmake-modules, kcoreaddons, polkit-qt, qttools
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "kauth";
|
name = "kauth";
|
||||||
meta = { maintainers = [ lib.maintainers.ttuegel ]; };
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [ polkit-qt qttools ];
|
buildInputs = [ polkit-qt qttools ];
|
||||||
propagatedBuildInputs = [ kcoreaddons ];
|
propagatedBuildInputs = [ kcoreaddons ];
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
mkDerivation, lib,
|
mkDerivation,
|
||||||
extra-cmake-modules, qttools,
|
extra-cmake-modules, qttools,
|
||||||
kcodecs, kconfig, kconfigwidgets, kcoreaddons, kiconthemes, kwidgetsaddons,
|
kcodecs, kconfig, kconfigwidgets, kcoreaddons, kiconthemes, kwidgetsaddons,
|
||||||
kxmlgui, qtbase,
|
kxmlgui, qtbase,
|
||||||
|
@ -7,7 +7,6 @@
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "kbookmarks";
|
name = "kbookmarks";
|
||||||
meta = { maintainers = [ lib.maintainers.ttuegel ]; };
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules qttools ];
|
nativeBuildInputs = [ extra-cmake-modules qttools ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
kcodecs kconfig kconfigwidgets kcoreaddons kiconthemes kxmlgui
|
kcodecs kconfig kconfigwidgets kcoreaddons kiconthemes kxmlgui
|
||||||
|
|
|
@ -1,15 +1,12 @@
|
||||||
{
|
{
|
||||||
mkDerivation,
|
mkDerivation,
|
||||||
lib,
|
|
||||||
extra-cmake-modules,
|
extra-cmake-modules,
|
||||||
libical
|
libical,
|
||||||
|
qtbase
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "kcalendarcore";
|
name = "kcalendarcore";
|
||||||
meta = {
|
|
||||||
maintainers = [ lib.maintainers.nyanloutre ];
|
|
||||||
};
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
propagatedBuildInputs = [ libical ];
|
propagatedBuildInputs = [ libical ];
|
||||||
outputs = [ "out" "dev" ];
|
outputs = [ "out" "dev" ];
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
mkDerivation, lib,
|
mkDerivation,
|
||||||
extra-cmake-modules,
|
extra-cmake-modules,
|
||||||
kconfigwidgets, kcoreaddons, kdeclarative, ki18n, kiconthemes, kitemviews,
|
kconfigwidgets, kcoreaddons, kdeclarative, ki18n, kiconthemes, kitemviews,
|
||||||
kpackage, kservice, kxmlgui, qtdeclarative,
|
kpackage, kservice, kxmlgui, qtdeclarative,
|
||||||
|
@ -7,7 +7,6 @@
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "kcmutils";
|
name = "kcmutils";
|
||||||
meta = { maintainers = [ lib.maintainers.ttuegel ]; };
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
kcoreaddons kdeclarative ki18n kiconthemes kitemviews kpackage kxmlgui
|
kcoreaddons kdeclarative ki18n kiconthemes kitemviews kpackage kxmlgui
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
{ mkDerivation, lib, extra-cmake-modules, qtbase, qttools, gperf }:
|
{ mkDerivation, extra-cmake-modules, qtbase, qttools, gperf }:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "kcodecs";
|
name = "kcodecs";
|
||||||
meta = {
|
|
||||||
maintainers = [ lib.maintainers.ttuegel ];
|
|
||||||
broken = builtins.compareVersions qtbase.version "5.14.0" < 0;
|
|
||||||
};
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [ qttools gperf ];
|
buildInputs = [ qttools gperf ];
|
||||||
propagatedBuildInputs = [ qtbase ];
|
propagatedBuildInputs = [ qtbase ];
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
{
|
{
|
||||||
mkDerivation, lib,
|
mkDerivation,
|
||||||
extra-cmake-modules,
|
extra-cmake-modules,
|
||||||
kconfig, kwidgetsaddons, qtbase, qttools
|
kconfig, kwidgetsaddons, qtbase, qttools
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "kcompletion";
|
name = "kcompletion";
|
||||||
meta = { maintainers = [ lib.maintainers.ttuegel ]; };
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [ kconfig kwidgetsaddons qttools ];
|
buildInputs = [ kconfig kwidgetsaddons qttools ];
|
||||||
propagatedBuildInputs = [ qtbase ];
|
propagatedBuildInputs = [ qtbase ];
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
{ mkDerivation, lib, extra-cmake-modules, qtbase, qttools }:
|
{ mkDerivation, extra-cmake-modules, qtbase, qttools }:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "kconfig";
|
name = "kconfig";
|
||||||
meta = {
|
|
||||||
maintainers = [ lib.maintainers.ttuegel ];
|
|
||||||
broken = builtins.compareVersions qtbase.version "5.14.0" < 0;
|
|
||||||
};
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [ qttools ];
|
buildInputs = [ qttools ];
|
||||||
propagatedBuildInputs = [ qtbase ];
|
propagatedBuildInputs = [ qtbase ];
|
||||||
|
|
|
@ -1,8 +1,17 @@
|
||||||
|
From 05c0eb5d803ac52c0dd97a98f6d2821650c3c14c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Tuegel <ttuegel@mailbox.org>
|
||||||
|
Date: Sun, 28 Mar 2021 06:09:47 -0500
|
||||||
|
Subject: [PATCH] QDirIterator follow symlinks
|
||||||
|
|
||||||
|
---
|
||||||
|
src/khelpclient.cpp | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/src/khelpclient.cpp b/src/khelpclient.cpp
|
diff --git a/src/khelpclient.cpp b/src/khelpclient.cpp
|
||||||
index fbbc0fa..cb78741 100644
|
index a053cd7..787d375 100644
|
||||||
--- a/src/khelpclient.cpp
|
--- a/src/khelpclient.cpp
|
||||||
+++ b/src/khelpclient.cpp
|
+++ b/src/khelpclient.cpp
|
||||||
@@ -48,7 +48,7 @@ void KHelpClient::invokeHelp(const QString &anchor, const QString &_appname)
|
@@ -34,7 +34,7 @@ void KHelpClient::invokeHelp(const QString &anchor, const QString &_appname)
|
||||||
QString docPath;
|
QString docPath;
|
||||||
const QStringList desktopDirs = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation);
|
const QStringList desktopDirs = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation);
|
||||||
for (const QString &dir : desktopDirs) {
|
for (const QString &dir : desktopDirs) {
|
||||||
|
@ -11,8 +20,6 @@ index fbbc0fa..cb78741 100644
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
const QString desktopPath(it.next());
|
const QString desktopPath(it.next());
|
||||||
KDesktopFile desktopFile(desktopPath);
|
KDesktopFile desktopFile(desktopPath);
|
||||||
@@ -75,4 +75,3 @@ void KHelpClient::invokeHelp(const QString &anchor, const QString &_appname)
|
--
|
||||||
// launch khelpcenter, or a browser for URIs not handled by khelpcenter
|
2.30.1
|
||||||
QDesktopServices::openUrl(url);
|
|
||||||
}
|
|
||||||
-
|
|
|
@ -1,15 +1,14 @@
|
||||||
{
|
{
|
||||||
mkDerivation, lib, extra-cmake-modules,
|
mkDerivation, extra-cmake-modules,
|
||||||
kauth, kcodecs, kconfig, kdoctools, kguiaddons, ki18n, kwidgetsaddons, qttools, qtbase,
|
kauth, kcodecs, kconfig, kdoctools, kguiaddons, ki18n, kwidgetsaddons, qttools, qtbase,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "kconfigwidgets";
|
name = "kconfigwidgets";
|
||||||
meta = { maintainers = [ lib.maintainers.ttuegel ]; };
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
||||||
buildInputs = [ kguiaddons ki18n qtbase qttools ];
|
buildInputs = [ kguiaddons ki18n qtbase qttools ];
|
||||||
propagatedBuildInputs = [ kauth kcodecs kconfig kwidgetsaddons ];
|
propagatedBuildInputs = [ kauth kcodecs kconfig kwidgetsaddons ];
|
||||||
patches = [ ./0001-qdiriterator-follow-symlinks.patch ];
|
patches = [ ./0001-QDirIterator-follow-symlinks.patch ];
|
||||||
outputs = [ "out" "dev" ];
|
outputs = [ "out" "dev" ];
|
||||||
outputBin = "dev";
|
outputBin = "dev";
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
|
|
|
@ -1,15 +1,11 @@
|
||||||
{
|
{
|
||||||
mkDerivation, lib,
|
mkDerivation,
|
||||||
extra-cmake-modules,
|
extra-cmake-modules,
|
||||||
qtbase, qttools, shared-mime-info
|
qtbase, qttools, shared-mime-info
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
name = "kcoreaddons";
|
name = "kcoreaddons";
|
||||||
meta = {
|
|
||||||
maintainers = [ lib.maintainers.ttuegel ];
|
|
||||||
broken = builtins.compareVersions qtbase.version "5.14.0" < 0;
|
|
||||||
};
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [ qttools shared-mime-info ];
|
buildInputs = [ qttools shared-mime-info ];
|
||||||
propagatedBuildInputs = [ qtbase ];
|
propagatedBuildInputs = [ qtbase ];
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue