Merge remote-tracking branch 'upstream/master' into HEAD

This commit is contained in:
Frederik Rietdijk 2018-03-01 20:00:42 +01:00
commit 810dd0f984
64 changed files with 947 additions and 141 deletions

View File

@ -71,6 +71,7 @@
auntie = "Jonathan Glines <auntieNeo@gmail.com>";
avnik = "Alexander V. Nikolaev <avn@avnik.info>";
aycanirican = "Aycan iRiCAN <iricanaycan@gmail.com>";
babariviere = "Bastien Riviere <babariviere@protonmail.com>";
bachp = "Pascal Bach <pascal.bach@nextrem.ch>";
backuitist = "Bruno Bieth";
badi = "Badi' Abdul-Wahid <abdulwahidc@gmail.com>";
@ -380,6 +381,7 @@
ledif = "Adam Fidel <refuse@gmail.com>";
leemachin = "Lee Machin <me@mrl.ee>";
leenaars = "Michiel Leenaars <ml.software@leenaa.rs>";
lejonet = "Daniel Kuehn <daniel@kuehn.se>";
leonardoce = "Leonardo Cecchi <leonardo.cecchi@gmail.com>";
lethalman = "Luca Bruno <lucabru@src.gnome.org>";
lewo = "Antoine Eiche <lewo@abesis.fr>";

View File

@ -304,6 +304,7 @@
mighttpd2 = 285;
hass = 286;
monero = 287;
ceph = 288;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
@ -576,6 +577,7 @@
mighttpd2 = 285;
hass = 286;
monero = 287;
ceph = 288;
# When adding a gid, make sure it doesn't match an existing
# uid. Users and groups with the same name should have equal

View File

@ -439,6 +439,7 @@
./services/network-filesystems/u9fs.nix
./services/network-filesystems/yandex-disk.nix
./services/network-filesystems/xtreemfs.nix
./services/network-filesystems/ceph.nix
./services/networking/amuled.nix
./services/networking/aria2.nix
./services/networking/asterisk.nix

View File

@ -0,0 +1,371 @@
{ config, lib, pkgs, ... }:
with lib;
let
ceph = pkgs.ceph;
cfg = config.services.ceph;
# function that translates "camelCaseOptions" to "camel case options", credits to tilpner in #nixos@freenode
translateOption = replaceStrings upperChars (map (s: " ${s}") lowerChars);
generateDaemonList = (daemonType: daemons: extraServiceConfig:
mkMerge (
map (daemon:
{ "ceph-${daemonType}-${daemon}" = generateServiceFile daemonType daemon cfg.global.clusterName ceph extraServiceConfig; }
) daemons
)
);
generateServiceFile = (daemonType: daemonId: clusterName: ceph: extraServiceConfig: {
enable = true;
description = "Ceph ${builtins.replaceStrings lowerChars upperChars daemonType} daemon ${daemonId}";
after = [ "network-online.target" "local-fs.target" "time-sync.target" ] ++ optional (daemonType == "osd") "ceph-mon.target";
wants = [ "network-online.target" "local-fs.target" "time-sync.target" ];
partOf = [ "ceph-${daemonType}.target" ];
wantedBy = [ "ceph-${daemonType}.target" ];
serviceConfig = {
LimitNOFILE = 1048576;
LimitNPROC = 1048576;
Environment = "CLUSTER=${clusterName}";
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
PrivateDevices = "yes";
PrivateTmp = "true";
ProtectHome = "true";
ProtectSystem = "full";
Restart = "on-failure";
StartLimitBurst = "5";
StartLimitInterval = "30min";
ExecStart = "${ceph.out}/bin/${if daemonType == "rgw" then "radosgw" else "ceph-${daemonType}"} -f --cluster ${clusterName} --id ${if daemonType == "rgw" then "client.${daemonId}" else daemonId} --setuser ceph --setgroup ceph";
} // extraServiceConfig
// optionalAttrs (daemonType == "osd") { ExecStartPre = "${ceph.out}/libexec/ceph/ceph-osd-prestart.sh --id ${daemonId} --cluster ${clusterName}"; };
} // optionalAttrs (builtins.elem daemonType [ "mds" "mon" "rgw" "mgr" ]) { preStart = ''
daemonPath="/var/lib/ceph/${if daemonType == "rgw" then "radosgw" else daemonType}/${clusterName}-${daemonId}"
if [ ! -d ''$daemonPath ]; then
mkdir -m 755 -p ''$daemonPath
chown -R ceph:ceph ''$daemonPath
fi
'';
} // optionalAttrs (daemonType == "osd") { path = [ pkgs.getopt ]; }
);
generateTargetFile = (daemonType:
{
"ceph-${daemonType}" = {
description = "Ceph target allowing to start/stop all ceph-${daemonType} services at once";
partOf = [ "ceph.target" ];
before = [ "ceph.target" ];
};
}
);
in
{
options.services.ceph = {
# Ceph has a monolithic configuration file but different sections for
# each daemon, a separate client section and a global section
enable = mkEnableOption "Ceph global configuration";
global = {
fsid = mkOption {
type = types.str;
example = ''
433a2193-4f8a-47a0-95d2-209d7ca2cca5
'';
description = ''
Filesystem ID, a generated uuid, its must be generated and set before
attempting to start a cluster
'';
};
clusterName = mkOption {
type = types.str;
default = "ceph";
description = ''
Name of cluster
'';
};
monInitialMembers = mkOption {
type = with types; nullOr commas;
default = null;
example = ''
node0, node1, node2
'';
description = ''
List of hosts that will be used as monitors at startup.
'';
};
monHost = mkOption {
type = with types; nullOr commas;
default = null;
example = ''
10.10.0.1, 10.10.0.2, 10.10.0.3
'';
description = ''
List of hostname shortnames/IP addresses of the initial monitors.
'';
};
maxOpenFiles = mkOption {
type = types.int;
default = 131072;
description = ''
Max open files for each OSD daemon.
'';
};
authClusterRequired = mkOption {
type = types.enum [ "cephx" "none" ];
default = "cephx";
description = ''
Enables requiring daemons to authenticate with eachother in the cluster.
'';
};
authServiceRequired = mkOption {
type = types.enum [ "cephx" "none" ];
default = "cephx";
description = ''
Enables requiring clients to authenticate with the cluster to access services in the cluster (e.g. radosgw, mds or osd).
'';
};
authClientRequired = mkOption {
type = types.enum [ "cephx" "none" ];
default = "cephx";
description = ''
Enables requiring the cluster to authenticate itself to the client.
'';
};
publicNetwork = mkOption {
type = with types; nullOr commas;
default = null;
example = ''
10.20.0.0/24, 192.168.1.0/24
'';
description = ''
A comma-separated list of subnets that will be used as public networks in the cluster.
'';
};
clusterNetwork = mkOption {
type = with types; nullOr commas;
default = null;
example = ''
10.10.0.0/24, 192.168.0.0/24
'';
description = ''
A comma-separated list of subnets that will be used as cluster networks in the cluster.
'';
};
};
mgr = {
enable = mkEnableOption "Ceph MGR daemon";
daemons = mkOption {
type = with types; listOf str;
default = [];
example = ''
[ "name1" "name2" ];
'';
description = ''
A list of names for manager daemons that should have a service created. The names correspond
to the id part in ceph i.e. [ "name1" ] would result in mgr.name1
'';
};
extraConfig = mkOption {
type = with types; attrsOf str;
default = {};
description = ''
Extra configuration to add to the global section for manager daemons.
'';
};
};
mon = {
enable = mkEnableOption "Ceph MON daemon";
daemons = mkOption {
type = with types; listOf str;
default = [];
example = ''
[ "name1" "name2" ];
'';
description = ''
A list of monitor daemons that should have a service created. The names correspond
to the id part in ceph i.e. [ "name1" ] would result in mon.name1
'';
};
extraConfig = mkOption {
type = with types; attrsOf str;
default = {};
description = ''
Extra configuration to add to the monitor section.
'';
};
};
osd = {
enable = mkEnableOption "Ceph OSD daemon";
daemons = mkOption {
type = with types; listOf str;
default = [];
example = ''
[ "name1" "name2" ];
'';
description = ''
A list of OSD daemons that should have a service created. The names correspond
to the id part in ceph i.e. [ "name1" ] would result in osd.name1
'';
};
extraConfig = mkOption {
type = with types; attrsOf str;
default = {
"osd journal size" = "10000";
"osd pool default size" = "3";
"osd pool default min size" = "2";
"osd pool default pg num" = "200";
"osd pool default pgp num" = "200";
"osd crush chooseleaf type" = "1";
};
description = ''
Extra configuration to add to the OSD section.
'';
};
};
mds = {
enable = mkEnableOption "Ceph MDS daemon";
daemons = mkOption {
type = with types; listOf str;
default = [];
example = ''
[ "name1" "name2" ];
'';
description = ''
A list of metadata service daemons that should have a service created. The names correspond
to the id part in ceph i.e. [ "name1" ] would result in mds.name1
'';
};
extraConfig = mkOption {
type = with types; attrsOf str;
default = {};
description = ''
Extra configuration to add to the MDS section.
'';
};
};
rgw = {
enable = mkEnableOption "Ceph RadosGW daemon";
daemons = mkOption {
type = with types; listOf str;
default = [];
example = ''
[ "name1" "name2" ];
'';
description = ''
A list of rados gateway daemons that should have a service created. The names correspond
to the id part in ceph i.e. [ "name1" ] would result in client.name1, radosgw daemons
aren't daemons to cluster in the sense that OSD, MGR or MON daemons are. They are simply
daemons, from ceph, that uses the cluster as a backend.
'';
};
};
client = {
enable = mkEnableOption "Ceph client configuration";
extraConfig = mkOption {
type = with types; attrsOf str;
default = {};
example = ''
{
# This would create a section for a radosgw daemon named node0 and related
# configuration for it
"client.radosgw.node0" = { "some config option" = "true"; };
};
'';
description = ''
Extra configuration to add to the client section. Configuration for rados gateways
would be added here, with their own sections, see example.
'';
};
};
};
config = mkIf config.services.ceph.enable {
assertions = [
{ assertion = cfg.global.fsid != "";
message = "fsid has to be set to a valid uuid for the cluster to function";
}
{ assertion = cfg.mgr.enable == true;
message = "ceph 12.x requires atleast 1 MGR daemon enabled for the cluster to function";
}
{ assertion = cfg.mon.enable == true -> cfg.mon.daemons != [];
message = "have to set id of atleast one MON if you're going to enable Monitor";
}
{ assertion = cfg.mds.enable == true -> cfg.mds.daemons != [];
message = "have to set id of atleast one MDS if you're going to enable Metadata Service";
}
{ assertion = cfg.osd.enable == true -> cfg.osd.daemons != [];
message = "have to set id of atleast one OSD if you're going to enable OSD";
}
{ assertion = cfg.mgr.enable == true -> cfg.mgr.daemons != [];
message = "have to set id of atleast one MGR if you're going to enable MGR";
}
];
warnings = optional (cfg.global.monInitialMembers == null)
''Not setting up a list of members in monInitialMembers requires that you set the host variable for each mon daemon or else the cluster won't function'';
environment.etc."ceph/ceph.conf".text = let
# Translate camelCaseOptions to the expected camel case option for ceph.conf
translatedGlobalConfig = mapAttrs' (name: value: nameValuePair (translateOption name) value) cfg.global;
# Merge the extraConfig set for mgr daemons, as mgr don't have their own section
globalAndMgrConfig = translatedGlobalConfig // optionalAttrs cfg.mgr.enable cfg.mgr.extraConfig;
# Remove all name-value pairs with null values from the attribute set to avoid making empty sections in the ceph.conf
globalConfig = mapAttrs' (name: value: nameValuePair (translateOption name) value) (filterAttrs (name: value: value != null) globalAndMgrConfig);
totalConfig = {
"global" = globalConfig;
} // optionalAttrs (cfg.mon.enable && cfg.mon.extraConfig != {}) { "mon" = cfg.mon.extraConfig; }
// optionalAttrs (cfg.mds.enable && cfg.mds.extraConfig != {}) { "mds" = cfg.mds.extraConfig; }
// optionalAttrs (cfg.osd.enable && cfg.osd.extraConfig != {}) { "osd" = cfg.osd.extraConfig; }
// optionalAttrs (cfg.client.enable && cfg.client.extraConfig != {}) cfg.client.extraConfig;
in
generators.toINI {} totalConfig;
users.extraUsers = singleton {
name = "ceph";
uid = config.ids.uids.ceph;
description = "Ceph daemon user";
};
users.extraGroups = singleton {
name = "ceph";
gid = config.ids.gids.ceph;
};
systemd.services = let
services = []
++ optional cfg.mon.enable (generateDaemonList "mon" cfg.mon.daemons { RestartSec = "10"; })
++ optional cfg.mds.enable (generateDaemonList "mds" cfg.mds.daemons { StartLimitBurst = "3"; })
++ optional cfg.osd.enable (generateDaemonList "osd" cfg.osd.daemons { StartLimitBurst = "30"; RestartSec = "20s"; })
++ optional cfg.rgw.enable (generateDaemonList "rgw" cfg.rgw.daemons { })
++ optional cfg.mgr.enable (generateDaemonList "mgr" cfg.mgr.daemons { StartLimitBurst = "3"; });
in
mkMerge services;
systemd.targets = let
targets = [
{ "ceph" = { description = "Ceph target allowing to start/stop all ceph service instances at once"; }; }
] ++ optional cfg.mon.enable (generateTargetFile "mon")
++ optional cfg.mds.enable (generateTargetFile "mds")
++ optional cfg.osd.enable (generateTargetFile "osd")
++ optional cfg.rgw.enable (generateTargetFile "rgw")
++ optional cfg.mgr.enable (generateTargetFile "mgr");
in
mkMerge targets;
systemd.tmpfiles.rules = [
"d /run/ceph 0770 ceph ceph -"
];
};
}

View File

@ -650,7 +650,11 @@ let
unitFiles = map (name: {
target = "systemd/network/${name}";
source = "${cfg.units.${name}.unit}/${name}";
}) (attrNames cfg.units);
}) (attrNames cfg.units) ++
(map (entry: {
target = "systemd/network/${entry}";
source = "${config.systemd.package}/lib/systemd/network/${entry}";
}) (attrNames (builtins.readDir "${config.systemd.package}/lib/systemd/network")));
in
{

View File

@ -230,6 +230,7 @@ in rec {
tests.borgbackup = callTest tests/borgbackup.nix {};
tests.buildbot = callTest tests/buildbot.nix {};
tests.cadvisor = callTestOnTheseSystems ["x86_64-linux"] tests/cadvisor.nix {};
tests.ceph = callTestOnTheseSystems ["x86_64-linux"] tests/ceph.nix {};
tests.chromium = (callSubTestsOnTheseSystems ["x86_64-linux"] tests/chromium.nix {}).stable;
tests.cjdns = callTest tests/cjdns.nix {};
tests.cloud-init = callTest tests/cloud-init.nix {};

140
nixos/tests/ceph.nix Normal file
View File

@ -0,0 +1,140 @@
import ./make-test.nix ({pkgs, ...}: rec {
name = "All-in-one-basic-ceph-cluster";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ lejonet ];
};
nodes = {
aio = { config, pkgs, ... }: {
virtualisation = {
emptyDiskImages = [ 20480 20480 ];
vlans = [ 1 ];
};
networking = {
firewall.allowPing = true;
useDHCP = false;
interfaces.eth1.ipv4.addresses = pkgs.lib.mkOverride 0 [
{ address = "192.168.1.1"; prefixLength = 24; }
];
};
environment.systemPackages = with pkgs; [
bash
sudo
ceph
xfsprogs
];
nixpkgs.config.packageOverrides = super: {
ceph = super.ceph.override({ nss = super.nss; libxfs = super.libxfs; libaio = super.libaio; jemalloc = super.jemalloc; });
};
boot.kernelModules = [ "xfs" ];
services.ceph.enable = true;
services.ceph.global = {
fsid = "066ae264-2a5d-4729-8001-6ad265f50b03";
monInitialMembers = "aio";
monHost = "192.168.1.1";
};
services.ceph.mon = {
enable = true;
daemons = [ "aio" ];
};
services.ceph.mgr = {
enable = true;
daemons = [ "aio" ];
};
services.ceph.osd = {
enable = true;
daemons = [ "0" "1" ];
};
};
};
testScript = { nodes, ... }: ''
startAll;
$aio->waitForUnit("network.target");
# Create the ceph-related directories
$aio->mustSucceed(
"mkdir -p /var/lib/ceph/mgr/ceph-aio/",
"mkdir -p /var/lib/ceph/mon/ceph-aio/",
"mkdir -p /var/lib/ceph/osd/ceph-{0..1}/",
"chown ceph:ceph -R /var/lib/ceph/"
);
# Bootstrap ceph-mon daemon
$aio->mustSucceed(
"mkdir -p /var/lib/ceph/bootstrap-osd && chown ceph:ceph /var/lib/ceph/bootstrap-osd",
"sudo -u ceph ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'",
"ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'",
"ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring",
"monmaptool --create --add aio 192.168.1.1 --fsid 066ae264-2a5d-4729-8001-6ad265f50b03 /tmp/monmap",
"sudo -u ceph ceph-mon --mkfs -i aio --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring",
"touch /var/lib/ceph/mon/ceph-aio/done",
"systemctl start ceph-mon-aio"
);
$aio->waitForUnit("ceph-mon-aio");
# Can't check ceph status until a mon is up
$aio->succeed("ceph -s | grep 'mon: 1 daemons'");
# Start the ceph-mgr daemon, it has no deps and hardly any setup
$aio->mustSucceed(
"ceph auth get-or-create mgr.aio mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-aio/keyring",
"systemctl start ceph-mgr-aio"
);
$aio->waitForUnit("ceph-mgr-aio");
$aio->waitUntilSucceeds("ceph -s | grep 'quorum aio'");
# Bootstrap both OSDs
$aio->mustSucceed(
"mkfs.xfs /dev/vdb",
"mkfs.xfs /dev/vdc",
"mount /dev/vdb /var/lib/ceph/osd/ceph-0",
"mount /dev/vdc /var/lib/ceph/osd/ceph-1",
"ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-0/keyring --name osd.0 --add-key AQBCEJNa3s8nHRAANvdsr93KqzBznuIWm2gOGg==",
"ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-1/keyring --name osd.1 --add-key AQBEEJNac00kExAAXEgy943BGyOpVH1LLlHafQ==",
"echo '{\"cephx_secret\": \"AQBCEJNa3s8nHRAANvdsr93KqzBznuIWm2gOGg==\"}' | ceph osd new 55ba2294-3e24-478f-bee0-9dca4c231dd9 -i -",
"echo '{\"cephx_secret\": \"AQBEEJNac00kExAAXEgy943BGyOpVH1LLlHafQ==\"}' | ceph osd new 5e97a838-85b6-43b0-8950-cb56d554d1e5 -i -"
);
# Initialize the OSDs with regular filestore
$aio->mustSucceed(
"ceph-osd -i 0 --mkfs --osd-uuid 55ba2294-3e24-478f-bee0-9dca4c231dd9",
"ceph-osd -i 1 --mkfs --osd-uuid 5e97a838-85b6-43b0-8950-cb56d554d1e5",
"chown -R ceph:ceph /var/lib/ceph/osd",
"systemctl start ceph-osd-0",
"systemctl start ceph-osd-1"
);
$aio->waitUntilSucceeds("ceph osd stat | grep '2 osds: 2 up, 2 in'");
$aio->waitUntilSucceeds("ceph -s | grep 'mgr: aio(active)'");
$aio->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
$aio->mustSucceed(
"ceph osd pool create aio-test 100 100",
"ceph osd pool ls | grep 'aio-test'",
"ceph osd pool rename aio-test aio-other-test",
"ceph osd pool ls | grep 'aio-other-test'",
"ceph -s | grep '1 pools, 100 pgs'",
"ceph osd getcrushmap -o crush",
"crushtool -d crush -o decrushed",
"sed 's/step chooseleaf firstn 0 type host/step chooseleaf firstn 0 type osd/' decrushed > modcrush",
"crushtool -c modcrush -o recrushed",
"ceph osd setcrushmap -i recrushed",
"ceph osd pool set aio-other-test size 2"
);
$aio->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
$aio->waitUntilSucceeds("ceph -s | grep '100 active+clean'");
$aio->mustFail(
"ceph osd pool ls | grep 'aio-test'",
"ceph osd pool delete aio-other-test aio-other-test --yes-i-really-really-mean-it"
);
'';
})

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "praat-${version}";
version = "5.4.17";
version = "6.0.37";
src = fetchurl {
url = "https://github.com/praat/praat/archive/v${version}.tar.gz";
sha256 = "0s2hrksghg686059vc90h3ywhd2702pqcvy99icw27q5mdk6dqsx";
sha256 = "1c675jfzcrwfn8lcswm5y5kmazkhnb0p4mzlf5sim57hms88ffjq";
};
configurePhase = ''

View File

@ -1,12 +1,12 @@
{ stdenv, fetchurl, pkgconfig, qt4, alsaLib }:
stdenv.mkDerivation rec {
version = "0.3.0";
version = "0.4.0";
name = "qmidiroute-${version}";
src = fetchurl {
url = "mirror://sourceforge/project/alsamodular/QMidiRoute/${version}/${name}.tar.gz";
sha256 = "11bfjz14z37v6hk2xyg4vrw423b5h3qgcbviv07g00ws1fgjygm2";
sha256 = "0vmjwarsxr5540rafhmdcc62yarf0w2l05bjjl9s28zzr5m39z3n";
};
nativeBuildInputs = [ pkgconfig ];

View File

@ -3,12 +3,12 @@
, liblo, liblrdf, libsamplerate, libsndfile, lirc ? null, qtbase }:
stdenv.mkDerivation (rec {
version = "17.04";
version = "17.12.1";
name = "rosegarden-${version}";
src = fetchurl {
url = "mirror://sourceforge/rosegarden/${name}.tar.bz2";
sha256 = "1khfcj22asdhjh0jvhkqsz200wgmigkhsrcz09ffia5hqm0n32lq";
sha256 = "155kqbxg85wqv0w97cmmx8wq0r4xb3qpnk20lfma04vj8k6hc1mg";
};
patchPhase = ''

View File

@ -29,7 +29,7 @@ mkDerivation rec {
NIX_CFLAGS_COMPILE = [ "-I${ilmbase.dev}/include/OpenEXR" ];
meta = with lib; {
description = "A free an open source painting application";
description = "A free and open source painting application";
homepage = https://krita.org/;
maintainers = with maintainers; [ abbradar ];
platforms = platforms.linux;

View File

@ -42,10 +42,8 @@ stdenv.mkDerivation rec {
pythonPath = [ pygobject3 pyxdg ];
preConfigure = "./bootstrap";
postFixup = ''
wrapPythonPrograms
rm "$out/share/icons/hicolor/icon-theme.cache"
'';
postFixup = "wrapPythonPrograms";
enableParallelBuilding = true;

View File

@ -0,0 +1,54 @@
{ stdenv
, fetchFromGitHub
, gettext
, libxml2
, pkgconfig
, gtk3
, granite
, gnome3
, cmake
, ninja
, vala
, elementary-cmake-modules
, wrapGAppsHook }:
stdenv.mkDerivation rec {
name = "regextester-${version}";
version = "0.1.7";
src = fetchFromGitHub {
owner = "artemanufrij";
repo = "regextester";
rev = version;
sha256 = "07shdm10dc7jz2hka5dc51yp81a0dgc47nmkrp6fs6r9wqx0j30n";
};
XDG_DATA_DIRS = stdenv.lib.concatStringsSep ":" [
"${granite}/share"
"${gnome3.libgee}/share"
];
nativeBuildInputs = [
pkgconfig
wrapGAppsHook
vala
cmake
ninja
gettext
libxml2
elementary-cmake-modules
];
buildInputs = [
gtk3
granite
gnome3.libgee
];
meta = with stdenv.lib; {
description = "A desktop application to test regular expressions interactively";
homepage = https://github.com/artemanufrij/regextester;
maintainers = with maintainers; [ samdroid-apps ];
platforms = platforms.linux;
license = licenses.gpl2Plus;
};
}

View File

@ -3,25 +3,19 @@
stdenv.mkDerivation rec {
name = "${pname}-${version}";
pname = "rssguard";
version = "3.5.5";
version = "3.5.6";
src = fetchFromGitHub {
owner = "martinrotter";
repo = pname;
rev = version;
sha256 = "0swjh664y1yqr1rn3ym2kicyx7r97ypr4qf7qrjl4a5q1spzsv48";
sha256 = "1pdas7hg3nzykm3qi951fk25c9s6gjb7my82b9xzjn2yd7ks71by";
};
buildInputs = [ qtwebengine qttools ];
nativeBuildInputs = [ qmake wrapGAppsHook ];
qmakeFlags = [ "CONFIG+=release" ];
# FIXME: This shouldn't be needed after 3.5.5.
# See: https://github.com/martinrotter/rssguard/issues/175
preConfigure = ''
lrelease rssguard.pro
'';
meta = with stdenv.lib; {
description = "Simple RSS/Atom feed reader with online synchronization";
longDescription = ''

View File

@ -7,11 +7,11 @@
mkDerivation rec {
name = "skrooge-${version}";
version = "2.10.5";
version = "2.11.0";
src = fetchurl {
url = "http://download.kde.org/stable/skrooge/${name}.tar.xz";
sha256 = "1c1yihypb6qgbzfcrw4ylqr9zivyba10xzvibrmfkrilxi6i582n";
sha256 = "11ns0j3ss09aqd8snfzd52xf0cgsjjcgzalb031p7v17rn14yqaq";
};
nativeBuildInputs = [

View File

@ -4,11 +4,11 @@
stdenv.mkDerivation rec {
name = "root-${version}";
version = "6.10.08";
version = "6.12.06";
src = fetchurl {
url = "https://root.cern.ch/download/root_v${version}.source.tar.gz";
sha256 = "12mddl6pqwwc9nr4jqzp6h1jm4zycazd3v88dz306m1nmk97dlic";
sha256 = "1557b9sdragsx9i15qh6lq7fn056bgi87d31kxdl4vl0awigvp5f";
};
nativeBuildInputs = [ pkgconfig ];

View File

@ -1,14 +1,14 @@
{ fetchFromGitHub, lib, python2Packages, meld, subversion, gvfs, xdg_utils }:
python2Packages.buildPythonApplication rec {
name = "rabbitvcs-${version}";
version = "0.16";
version = "0.17.1";
namePrefix = "";
src = fetchFromGitHub {
owner = "rabbitvcs";
repo = "rabbitvcs";
rev = "v${version}";
sha256 = "0964pdylrx4n9c9l8ncwv4q1p63y4hadb5v4pgvm0m2fah2jlkly";
sha256 = "01cr16zf3gzsci1hhfli79m34fcx5m1pvswl16rkxxn212yc9fhy";
};
pythonPath = with python2Packages; [ configobj dbus-python pygobject2 pygtk simplejson pysvn dulwich tkinter gvfs xdg_utils ];

View File

@ -1,32 +1,36 @@
{ stdenv, fetchFromGitLab, pkgconfig, autoconf, automake, libiconv
, drake, ruby, docbook_xsl, file, xdg_utils, gettext, expat, qt5, boost
, drake, ruby, docbook_xsl, file, xdg_utils, gettext, expat, boost
, libebml, zlib, libmatroska, libogg, libvorbis, flac, libxslt, cmark
, withGUI ? true
, qtbase ? null
, qtmultimedia ? null
}:
assert withGUI -> qt5 != null;
assert withGUI -> qtbase != null && qtmultimedia != null;
with stdenv.lib;
stdenv.mkDerivation rec {
name = "mkvtoolnix-${version}";
version = "20.0.0";
version = "21.0.0";
src = fetchFromGitLab {
owner = "mbunkus";
repo = "mkvtoolnix";
rev = "release-${version}";
sha256 = "0qrjvvp0pvw9i91rh0zrxpclq7xap2dpjip0s5bm4gv14gh4l4mc";
owner = "mbunkus";
repo = "mkvtoolnix";
rev = "release-${version}";
sha256 = "06nixp0qqa6g2fv40f7l0i0sqbc7qswpgq4534l98nan08wjbk2r";
};
nativeBuildInputs = [ pkgconfig autoconf automake gettext drake ruby docbook_xsl libxslt ];
nativeBuildInputs = [
pkgconfig autoconf automake gettext
drake ruby docbook_xsl libxslt
];
buildInputs = [
expat file xdg_utils boost libebml zlib libmatroska libogg
libvorbis flac cmark
]
++ optional stdenv.isDarwin libiconv
++ optionals withGUI [qt5.qtbase qt5.qtmultimedia];
expat file xdg_utils boost libebml zlib
libmatroska libogg libvorbis flac cmark
] ++ optional stdenv.isDarwin libiconv
++ optionals withGUI [ qtbase qtmultimedia ];
preConfigure = "./autogen.sh; patchShebangs .";
buildPhase = "drake -j $NIX_BUILD_CORES";

View File

@ -0,0 +1,27 @@
{ stdenv, fetchFromGitHub, pkgconfig, qmake, qtx11extras, qttools, mpv }:
stdenv.mkDerivation rec {
name = "mpc-qt-${version}";
version = "17.11";
src = fetchFromGitHub {
owner = "cmdrkotori";
repo = "mpc-qt";
rev = "v${version}";
sha256 = "1vi4zsmbzxj6ms8wls9zv15vrskdrhgnj6l41m1fk4scs4jzvbkm";
};
nativeBuildInputs = [ pkgconfig qmake qttools ];
buildInputs = [ mpv qtx11extras ];
qmakeFlags = [ "QMAKE_LUPDATE=${qttools.dev}/bin/lupdate" ];
meta = with stdenv.lib; {
description = "Media Player Classic Qute Theater";
homepage = https://github.com/cmdrkotori/mpc-qt;
license = licenses.gpl2;
platforms = platforms.unix;
maintainers = with maintainers; [ romildo ];
};
}

View File

@ -1,5 +1,5 @@
{ stdenv, fetchgit, lib
, yad, mkvtoolnix, libnotify }:
, yad, mkvtoolnix-cli, libnotify }:
stdenv.mkDerivation {
name = "mpv-convert-script-2016-03-18.lua";
@ -19,7 +19,7 @@ stdenv.mkDerivation {
substituteInPlace convert_script.lua \
${subs "NOTIFY_CMD" "notify-send" "${libnotify}/bin/notify-send"} \
${subs "YAD_CMD" "yad" "${yad}/bin/yad"} \
${subs "MKVMERGE_CMD" "mkvmerge" "${mkvtoolnix}/bin/mkvmerge"}
${subs "MKVMERGE_CMD" "mkvmerge" "${mkvtoolnix-cli}/bin/mkvmerge"}
'';
dontBuild = true;

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "remotebox-${version}";
version = "2.2";
version = "2.4";
src = fetchurl {
url = "http://remotebox.knobgoblin.org.uk/downloads/RemoteBox-${version}.tar.bz2";
sha256 = "0g7lx5zk9fk5k8alpag45z2zw9bnrlx1zfs63rc3ilfyvm4k4zc5";
sha256 = "14zcpzpdb5gxkxvckcdwq3mfv8b18zirbdskzddhqxjddkzayckz";
};
buildInputs = with perlPackages; [ perl Glib Gtk2 Pango SOAPLite ];

View File

@ -58,7 +58,7 @@ in stdenv.mkDerivation rec {
cp -Rv $BUILDDIR/target/bin/stage1-*.aci $out/${stage1Dir}/
wrapProgram $out/bin/rkt \
--prefix LD_LIBRARY_PATH : ${systemd.lib}/lib \
--prefix LD_LIBRARY_PATH : "${systemd.lib}/lib:${acl.out}/lib" \
--prefix PATH : ${iptables}/bin
'';

View File

@ -1,8 +1,8 @@
import ./generic.nix {
major_version = "4";
minor_version = "06";
patch_version = "0";
sha256 = "1dy542yfnnw10zvh5s9qzswliq11mg7l0bcyss3501qw3vwvadhj";
patch_version = "1";
sha256 = "1n3pygfssd6nkrq876wszm5nm3v4605q4k16a66h1nmq9wvf01vg";
# If the executable is stipped it does not work
dontStrip = true;

View File

@ -471,10 +471,6 @@ self: super: builtins.intersectAttrs super {
'';
});
# Fails to link against with newer gsl versions because a deprecrated function
# was removed
hmatrix-gsl = super.hmatrix-gsl.override { gsl = pkgs.gsl_1; };
# tests run executable, relying on PATH
# without this, tests fail with "Couldn't launch intero process"
intero = overrideCabal super.intero (drv: {

View File

@ -343,8 +343,8 @@ in {
};
php70 = generic {
version = "7.0.27";
sha256 = "0ca174kp2l3fjcp8z0mqnkbjfhijjzz7rs7bkzg1qk2cpdijbylr";
version = "7.0.28";
sha256 = "0zrw0saqlfv60f3nmff7288wqfhdsfiqns4ys3ii0drzc6s92m5f";
};
php71 = generic {

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
name = "catch-${version}";
version = "1.11.0";
version = "1.12.0";
src = fetchFromGitHub {
owner = "catchorg";
repo = "Catch";
rev = "v${version}";
sha256 = "0v9yw7ydvhydp78hh7cmaif4h73k5qxqpm1g7xn8i882i3s84s2s";
sha256 = "0hkcmycvyyazzi9dywnyiipnmbx399iirh5xk5g957c8zl0505kd";
};
nativeBuildInputs = [ cmake ];

View File

@ -0,0 +1,28 @@
{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig }:
stdenv.mkDerivation {
name = "elementary-cmake-modules";
src = fetchFromGitHub {
owner = "elementary";
repo = "cmake-modules";
rev = "319ec5336e9f05f3f22b886cc2053ef3d4b6599e";
sha256 = "191hhvdxyqvh9axzndaqld7vrmv7xkn0czks908zhb2zpjhv9rby";
};
prePatch = ''
substituteInPlace CMakeLists.txt \
--replace ' ''${CMAKE_ROOT}/Modules' " $out/lib/cmake"
'';
propagatedBuildInputs = [ cmake pkgconfig ];
setupHook = ./setup-hook.sh;
meta = with lib; {
platforms = platforms.linux ++ platforms.darwin;
homepage = https://github.com/elementary/cmake-modules;
license = licenses.gpl3Plus;
maintainers = [ maintainers.samdroid-apps ];
};
}

View File

@ -0,0 +1,4 @@
_elementaryCMakeEnvHook() {
cmakeFlagsArray+=(-DCMAKE_MODULE_PATH=@out@/lib/cmake)
}
addEnvHooks "$targetOffset" _elementaryCMakeEnvHook

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, expat, zlib, geos, libspatialite }:
stdenv.mkDerivation rec {
name = "readosm-1.0.0b";
name = "readosm-1.1.0";
src = fetchurl {
url = "http://www.gaia-gis.it/gaia-sins/readosm-sources/${name}.tar.gz";
sha256 = "042pv31smc7l6y111rvp0hza5sw86wa8ldg2jyq78xgwzcbhszpd";
sha256 = "1v20pnda67imjd70fn0zw30aar525xicy3d3v49md5cvqklws265";
};
buildInputs = [ expat zlib geos libspatialite ];

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, ncurses, libiconv }:
stdenv.mkDerivation rec {
name = "stfl-0.22";
name = "stfl-0.24";
src = fetchurl {
url = "http://www.clifford.at/stfl/${name}.tar.gz";
sha256 = "062lqlf3qhp8bcapbpc0k3wym7x6ngncql8jmx5x06p6679szp9d";
sha256 = "1460d5lc780p3q38l3wc9jfr2a7zlyrcra0li65aynj738cam9yl";
};
buildInputs = [ ncurses libiconv ];
@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
DESTDIR=$out prefix=\"\" make install
# some programs rely on libstfl.so.0 to be present, so link it
ln -s $out/lib/libstfl.so.0.22 $out/lib/libstfl.so.0
ln -s $out/lib/libstfl.so.0.24 $out/lib/libstfl.so.0
'';
meta = {

View File

@ -11,4 +11,5 @@
, "pnpm"
, "semver"
, "sloc"
, "npm"
]

View File

@ -283,6 +283,15 @@ let
sha512 = "1kvjv5hs1c53b5g2vghpnncn4zj397sa0vpbx1pzpn8ngq52s3xq9923gnl2kzkh1mhyrl277jrh87a766yks89qvz8b4jczr44xr9p";
};
};
"bencode-2.0.0" = {
name = "bencode";
packageName = "bencode";
version = "2.0.0";
src = fetchurl {
url = "https://registry.npmjs.org/bencode/-/bencode-2.0.0.tgz";
sha512 = "3rdjlprrhprwwygnw5aik9pgi1xyr09yvgq3rbr4g3pl1v70mcc1k903x3vh9z782jly6vmnvp44nrskl5rhcxgfdwz19fl1b1qggf2";
};
};
"bitfield-rle-2.1.0" = {
name = "bitfield-rle";
packageName = "bitfield-rle";
@ -1768,13 +1777,13 @@ let
sha512 = "2nbjxg0x7jsa14zhvx68w1vri68hsxzbxz7b7ap76fdp0jkrgna2rq636yxnax04f3f8i2ambj2fpan6qli6vixmfryz78vrapdip8n";
};
};
"k-rpc-socket-1.7.2" = {
"k-rpc-socket-1.8.0" = {
name = "k-rpc-socket";
packageName = "k-rpc-socket";
version = "1.7.2";
version = "1.8.0";
src = fetchurl {
url = "https://registry.npmjs.org/k-rpc-socket/-/k-rpc-socket-1.7.2.tgz";
sha512 = "02w1ih1lh86i5ap7c3dy2ml7g5a11r0w300iyxdf6v02qr0j1x3vf78hx5q9dgg3drifab018mgm851m457zzzi05i2z2r1s3zlflc3";
url = "https://registry.npmjs.org/k-rpc-socket/-/k-rpc-socket-1.8.0.tgz";
sha512 = "0pc9bjnmgfjcgh49lclvz5qnlkzypgirlx5ji2nx15vfn00gwczy5hvfahcxdzcdqsjlwh7q8jw4zj8abdk8qx2cwiqdw8fgg557zvz";
};
};
"kind-of-3.2.2" = {
@ -3514,8 +3523,12 @@ in
sources."json-stringify-safe-5.0.1"
sources."jsprim-1.4.1"
sources."k-bucket-3.3.1"
sources."k-rpc-4.2.1"
sources."k-rpc-socket-1.7.2"
(sources."k-rpc-4.2.1" // {
dependencies = [
sources."bencode-2.0.0"
];
})
sources."k-rpc-socket-1.8.0"
sources."kind-of-3.2.2"
sources."last-one-wins-1.0.4"
sources."length-prefixed-message-3.0.3"
@ -4127,4 +4140,21 @@ in
production = true;
bypassCache = true;
};
npm = nodeEnv.buildNodePackage {
name = "npm";
packageName = "npm";
version = "5.6.0";
src = fetchurl {
url = "https://registry.npmjs.org/npm/-/npm-5.6.0.tgz";
sha512 = "0nnr796ik5h8bsd3k9ygivivr3na2ksnf5iipf8dsnn20j10i9sgmhmsnzbimd2pqgjbrpp8gbpl2q7j5c7yjqjfirrh8xcc3v3gpws";
};
buildInputs = globalBuildInputs;
meta = {
description = "a package manager for JavaScript";
homepage = https://docs.npmjs.com/;
license = "Artistic-2.0";
};
production = true;
bypassCache = true;
};
}

View File

@ -1,26 +1,30 @@
{ stdenv, fetchFromGitHub, ocaml, findlib, jbuilder, easy-format }:
stdenv.mkDerivation rec {
version = "1.2.0";
name = "ocaml${ocaml.version}-biniou-${version}";
src = fetchFromGitHub {
owner = "mjambon";
repo = "biniou";
rev = "v${version}";
sha256 = "0mjpgwyfq2b2izjw0flmlpvdjgqpq8shs89hxj1np2r50csr8dcb";
};
version = "1.2.0";
name = "ocaml${ocaml.version}-biniou-${version}";
src = fetchFromGitHub {
owner = "mjambon";
repo = "biniou";
rev = "v${version}";
sha256 = "0mjpgwyfq2b2izjw0flmlpvdjgqpq8shs89hxj1np2r50csr8dcb";
};
buildInputs = [ ocaml findlib jbuilder ];
buildInputs = [ ocaml findlib jbuilder ];
propagatedBuildInputs = [ easy-format ];
propagatedBuildInputs = [ easy-format ];
inherit (jbuilder) installPhase;
postPatch = ''
patchShebangs .
'';
meta = {
inherit (src.meta) homepage;
inherit (ocaml.meta) platforms;
description = "Binary data format designed for speed, safety, ease of use and backward compatibility as protocols evolve";
maintainers = [ stdenv.lib.maintainers.vbgl ];
license = stdenv.lib.licenses.bsd3;
};
inherit (jbuilder) installPhase;
meta = {
inherit (src.meta) homepage;
inherit (ocaml.meta) platforms;
description = "Binary data format designed for speed, safety, ease of use and backward compatibility as protocols evolve";
maintainers = [ stdenv.lib.maintainers.vbgl ];
license = stdenv.lib.licenses.bsd3;
};
}

View File

@ -0,0 +1,25 @@
{ lib, buildPythonPackage, fetchPypi, isPy3k, enum34, pycodestyle, pytest, flake8, pylama }:
buildPythonPackage rec {
pname = "flake8-import-order";
version = "0.17";
src = fetchPypi {
inherit pname version;
sha256 = "60ea6674c77e4d916071beabf2b31b9b45e2f5b3bbda48a34db65766a5b25678";
};
propagatedBuildInputs = [ pycodestyle ] ++ lib.optional (!isPy3k) enum34;
checkInputs = [ pytest flake8 pycodestyle pylama ];
checkPhase = ''
pytest --strict
'';
meta = with lib; {
description = "Flake8 and pylama plugin that checks the ordering of import statements";
homepage = https://github.com/PyCQA/flake8-import-order;
license = with licenses; [ lgpl3 mit ];
};
}

View File

@ -4,7 +4,6 @@
buildPythonPackage rec {
pname = "jsonrpc-async";
version = "0.6";
name = "${pname}-${version}";
src = fetchPypi {
inherit pname version;

View File

@ -3,7 +3,6 @@
buildPythonPackage rec {
pname = "jsonrpc-base";
version = "1.0";
name = "${pname}-${version}";
src = fetchPypi {
inherit pname version;

View File

@ -4,7 +4,6 @@
buildPythonPackage rec {
pname = "jsonrpc-websocket";
version = "0.5";
name = "${pname}-${version}";
src = fetchPypi {
inherit pname version;

View File

@ -1,20 +1,30 @@
{ stdenv, buildPythonPackage, fetchPypi, snowballstemmer, configparser,
pytest, pytestpep8, mock, pathlib }:
{ lib, buildPythonPackage, fetchFromGitHub, isPy3k, pythonOlder
, snowballstemmer, six, configparser
, pytest, pytestpep8, mock, pathlib }:
buildPythonPackage rec {
pname = "pydocstyle";
version = "2.1.1";
src = fetchPypi {
inherit pname version;
sha256 = "15ssv8l6cvrmzgwcdzw76rnl4np3qf0dbwr1wsx76y0hc7lwsnsd";
# no tests on PyPI
# https://github.com/PyCQA/pydocstyle/issues/302
src = fetchFromGitHub {
owner = "PyCQA";
repo = pname;
rev = version;
sha256 = "1h0k8lpx14svc8dini62j0kqiam10pck5sdzvxa4xhsx7y689g5l";
};
propagatedBuildInputs = [ snowballstemmer configparser ];
propagatedBuildInputs = [ snowballstemmer six ] ++ lib.optional (!isPy3k) configparser;
checkInputs = [ pytest pytestpep8 mock pathlib ];
checkInputs = [ pytest pytestpep8 mock ] ++ lib.optional (pythonOlder "3.4") pathlib;
meta = with stdenv.lib; {
checkPhase = ''
# test_integration.py installs packages via pip
py.test --pep8 --cache-clear -vv src/tests -k "not test_integration"
'';
meta = with lib; {
description = "Python docstring style checker";
homepage = https://github.com/PyCQA/pydocstyle/;
license = licenses.mit;

View File

@ -0,0 +1,33 @@
{ lib, buildPythonPackage, fetchPypi, fetchpatch
, mccabe, pycodestyle, pydocstyle, pyflakes
, pytest, ipdb }:
buildPythonPackage rec {
pname = "pylama";
version = "7.4.3";
src = fetchPypi {
inherit pname version;
sha256 = "390c1dab1daebdf3d6acc923e551b035c3faa77d8b96b98530c230493f9ec712";
};
patches = fetchpatch {
url = "${meta.homepage}/pull/116.patch";
sha256 = "00jz5k2w0xahs1m3s603j6l4cwzz92qsbbk81fh17nq0f47999mv";
};
propagatedBuildInputs = [ mccabe pycodestyle pydocstyle pyflakes ];
checkInputs = [ pytest ipdb ];
# tries to mess with the file system
doCheck = false;
meta = with lib; {
description = "Code audit tool for python";
homepage = https://github.com/klen/pylama;
# ambiguous license declarations: https://github.com/klen/pylama/issues/64
license = licenses.lgpl3;
maintainers = with maintainers; [ dotlambda ];
};
}

View File

@ -13,7 +13,7 @@ buildPythonPackage rec {
buildInputs = [ pytest pytestrunner mccabe configparser backports_functools_lru_cache ];
propagatedBuildInputs = [ astroid configparser isort ];
propagatedBuildInputs = [ astroid configparser isort mccabe ];
postPatch = ''
# Remove broken darwin tests

View File

@ -4,7 +4,6 @@
buildPythonPackage rec {
pname = "pyunifi";
version = "2.13";
name = "${pname}-${version}";
src = fetchPypi {
inherit pname version;

View File

@ -3,7 +3,6 @@
buildPythonPackage rec {
pname = "wakeonlan";
version = "1.0.0";
name = "${pname}-${version}";
src = fetchPypi {
inherit pname version;

View File

@ -139,8 +139,9 @@ in
};
grpc = attrs: {
nativeBuildInputs = [ pkgconfig ];
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ openssl ];
NIX_CFLAGS_COMPILE = [ "-Wno-error=stringop-overflow" "-Wno-error=implicit-fallthrough" ];
};
hitimes = attrs: {

View File

@ -0,0 +1,13 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 04c5c58..429ca47 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,7 +24,7 @@ set(CMAKE_OSX_ARCHITECTURES "i386;x86_64" CACHE STRING "Rogue")
set(EAR_LIB_FILE ${CMAKE_SHARED_LIBRARY_PREFIX}ear${CMAKE_SHARED_LIBRARY_SUFFIX})
set(EAR_LIB_PATH "${CMAKE_INSTALL_LIBDIR}/bear")
-set(DEFAULT_PRELOAD_FILE ${CMAKE_INSTALL_PREFIX}/${EAR_LIB_PATH}/${EAR_LIB_FILE} CACHE STRING "Default path to libear.")
+set(DEFAULT_PRELOAD_FILE ${EAR_LIB_PATH}/${EAR_LIB_FILE} CACHE STRING "Default path to libear.")
add_subdirectory(libear)
add_subdirectory(bear)

View File

@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
doCheck = false; # all fail
patches = [ ./ignore_wrapper.patch ];
patches = [ ./ignore_wrapper.patch ./cmakepaths.patch ];
meta = with stdenv.lib; {
description = "Tool that generates a compilation database for clang tooling";
@ -28,6 +28,6 @@ stdenv.mkDerivation rec {
homepage = https://github.com/rizsotto/Bear;
license = licenses.gpl3Plus;
platforms = platforms.unix;
maintainers = [ maintainers.vcunat ];
maintainers = [ maintainers.vcunat maintainers.babariviere ];
};
}

View File

@ -1,20 +1,24 @@
{ lib
, fetchurl
, fetchFromGitHub
, rustPlatform
}:
with rustPlatform;
buildRustPackage rec {
version = "0.19.1";
version = "unstable-2018-02-24";
name = "geckodriver-${version}";
src = fetchurl {
url = "https://github.com/mozilla/geckodriver/archive/v${version}.tar.gz";
sha256 = "04zpv4aiwbig466yj24hhazl5hrapkyvwlhvg0za5599ykzdv47m";
src = fetchFromGitHub {
owner = "mozilla";
repo = "gecko-dev";
rev = "ecb86060b4c5a9808798b81a57e79e821bb47082";
sha256 = "1am84a60adw0bb12rlhdqbiwyywhza4qp5sf4f4fmssjl2qcr6nl";
};
cargoSha256 = "1cny8caqcd9p98hra1k7y4d3lb8sxsyaplr0svbwam0d2qc1c257";
sourceRoot = "${src.name}/testing/geckodriver";
cargoSha256 = "0dvcvdb623jla29i93glx20nf8pbpfw6jj548ii6brzkcpafxxm8";
meta = with lib; {
description = "Proxy for using W3C WebDriver-compatible clients to interact with Gecko-based browsers";

View File

@ -1,18 +1,25 @@
{ stdenv, fetchurl, fetchpatch, runCommand, zlib, makeWrapper }:
{ stdenv, fetchurl, fetchpatch, runCommand, perl, zlib, makeWrapper }:
let ccache = stdenv.mkDerivation rec {
name = "ccache-${version}";
version = "3.3.5";
version = "3.4.1";
src = fetchurl {
sha256 = "1iih5d171rq29366c1z90dri2h8173yyc8rm2740wxiqx6k7c18r";
sha256 = "1pppi4jbkkj641cdynmc35jaj40jjicw7gj75ran5qs5886jcblc";
url = "mirror://samba/ccache/${name}.tar.xz";
};
nativeBuildInputs = [ perl ];
buildInputs = [ zlib ];
outputs = [ "out" "man" ];
# non to be fail on filesystems with unconventional blocksizes (zfs on Hydra?)
patches = [ ./skip-fs-dependent-test.patch ];
patches = [
./fix-debug-prefix-map-suite.patch
./skip-fs-dependent-test.patch
];
postPatch = ''
substituteInPlace Makefile.in --replace 'objs) $(extra_libs)' 'objs)'

View File

@ -0,0 +1,42 @@
--- a/test/suites/debug_prefix_map.bash
+++ b/test/suites/debug_prefix_map.bash
@@ -29,7 +29,7 @@
expect_stat 'cache hit (preprocessed)' 0
expect_stat 'cache miss' 1
expect_stat 'files in cache' 2
- if grep -E "[^=]`pwd`[^=]" test.o >/dev/null 2>&1; then
+ if objdump -g test.o | grep ": `pwd`$" >/dev/null 2>&1; then
test_failed "Source dir (`pwd`) found in test.o"
fi
@@ -39,7 +39,7 @@
expect_stat 'cache hit (preprocessed)' 0
expect_stat 'cache miss' 1
expect_stat 'files in cache' 2
- if grep -E "[^=]`pwd`[^=]" test.o >/dev/null 2>&1; then
+ if objdump -g test.o | grep ": `pwd`$" >/dev/null 2>&1; then
test_failed "Source dir (`pwd`) found in test.o"
fi
@@ -52,10 +52,10 @@
expect_stat 'cache hit (preprocessed)' 0
expect_stat 'cache miss' 1
expect_stat 'files in cache' 2
- if grep -E "[^=]`pwd`[^=]" test.o >/dev/null 2>&1; then
+ if objdump -g test.o | grep ": `pwd`$" >/dev/null 2>&1; then
test_failed "Source dir (`pwd`) found in test.o"
fi
- if ! grep "name" test.o >/dev/null 2>&1; then
+ if ! objdump -g test.o | grep ": name$" >/dev/null 2>&1; then
test_failed "Relocation (name) not found in test.o"
fi
@@ -65,7 +65,7 @@
expect_stat 'cache hit (preprocessed)' 0
expect_stat 'cache miss' 1
expect_stat 'files in cache' 2
- if grep -E "[^=]`pwd`[^=]" test.o >/dev/null 2>&1; then
+ if objdump -g test.o | grep ": `pwd`$" >/dev/null 2>&1; then
test_failed "Source dir (`pwd`) found in test.o"
fi
}

View File

@ -1,6 +1,6 @@
--- a/test.sh
+++ b/test.sh
@@ -2669,23 +2669,6 @@ SUITE_cleanup() {
--- a/test/suites/cleanup.bash
+++ b/test/suites/cleanup.bash
@@ -94,23 +94,6 @@
$CCACHE -F 0 -M 256K >/dev/null
CCACHE_LOGFILE=/tmp/foo $CCACHE -c >/dev/null

View File

@ -6,11 +6,11 @@ with stdenv.lib;
stdenv.mkDerivation rec{
name = "freecell-solver-${version}";
version = "4.8.0";
version = "4.16.0";
src = fetchurl {
url = "http://fc-solve.shlomifish.org/downloads/fc-solve/${name}.tar.xz";
sha256 = "0274l1p71ps222i62whqfkg80fcc8m4w2hmpbrbbd5gh8kfpman3";
sha256 = "1ihrmxbsli7c1lm5gw9xgrakyn4nsmaj1zgk5gza2ywnfpgdb0ac";
};
nativeBuildInputs = [ pkgconfig ];

View File

@ -4,13 +4,13 @@
stdenv.mkDerivation rec {
name = "pioneer-${version}";
version = "20171001";
version = "20180203";
src = fetchFromGitHub{
owner = "pioneerspacesim";
repo = "pioneer";
rev = version;
sha256 = "0yxw1zdvidrwc28vxfi3qpx2nq2dix2d6ylwgzq9ph8kgwv9fl5n";
sha256 = "0hp2mf36kj2v93hka8m8lxw2qhmnjc62wjlpw7c7ix0r8xa01i6h";
};
nativeBuildInputs = [ autoconf automake pkgconfig ];

View File

@ -3,11 +3,11 @@
stdenv.mkDerivation rec {
name = "${project}-${version}";
project = "rocksndiamonds";
version = "4.0.0.2";
version = "4.0.1.1";
src = fetchurl {
url = "https://www.artsoft.org/RELEASES/unix/${project}/${name}.tar.gz";
sha256 = "0dzn6vlayvnkjm64zwva337rn07lc21kq93m2h8zz8j3wpl11pb4";
sha256 = "0f2m29m53sngg2kv4km91nxbr53rzhchbpqx5dzrv3p5hq1hp936";
};
desktopItem = makeDesktopItem {

View File

@ -3,13 +3,13 @@
stdenv.mkDerivation rec {
name = "tp_smapi-${version}-${kernel.version}";
version = "unstable-2017-12-04";
version = "0.43";
src = fetchFromGitHub {
owner = "evgeni";
repo = "tp_smapi";
rev = "76c5120f7be4880cf2c6801f872327e4e70c449f";
sha256 = "0g8l7rmylspl17qnqpa2h4yj7h3zvy6xlmj5nlnixds9avnbz2vy";
rev = "tp-smapi/${version}";
sha256 = "1rjb0njckczc2mj05cagvj0lkyvmyk6bw7wkiinv81lw8m90g77g";
name = "tp-smapi-${version}";
};

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "radarr-${version}";
version = "0.2.0.910";
version = "0.2.0.980";
src = fetchurl {
url = "https://github.com/Radarr/Radarr/releases/download/v${version}/Radarr.develop.${version}.linux.tar.gz";
sha256 = "0c4msk6hvlqyy81xkjhsvsy4igpc01s4a00zwhqnds2gj4y9yplk";
sha256 = "1939mmlp9hsmw0hd4c8m8p5fk6igvml30gk9ffi9mfhankas6fnf";
};
buildInputs = [ makeWrapper ];

View File

@ -49,6 +49,7 @@ self = stdenv.mkDerivation rec {
"-DINSTALL_SHAREDIR=share/mysql"
];
CXXFLAGS = "-fpermissive";
NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isLinux "-lgcc_s";
prePatch = ''

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "pgroonga-${version}";
version = "1.1.9";
version = "2.0.2";
src = fetchurl {
url = "http://packages.groonga.org/source/pgroonga/${name}.tar.gz";
sha256 = "07afgwll8nxfb7ziw3qrvw0ryjjw3994vj2f6alrjwpg7ynb46ag";
sha256 = "0023747i2x3j50z54l78maq7dya5ldd2sdydn6l5l7k6b6g4yr2d";
};
nativeBuildInputs = [ pkgconfig ];

View File

@ -1,12 +1,12 @@
{stdenv, fetchurl, libaal}:
let version = "1.1.0"; in
let version = "1.2.1"; in
stdenv.mkDerivation rec {
name = "reiser4progs-${version}";
src = fetchurl {
url = "mirror://sourceforge/reiser4/reiser4-utils/${name}.tar.gz";
sha256 = "18bgv0wd75q53642x5dsk4g0mil1hw1zrp7a4xkb0pxx4bzjlbqg";
sha256 = "03vdqvpyd48wxrpqpb9kg76giaffw9b8k334kr4wc0zxgybknhl7";
};
buildInputs = [libaal];

View File

@ -3,10 +3,10 @@
stdenv.mkDerivation rec {
name = "scanbd-${version}";
version = "1.4.4";
version = "1.5.1";
src = fetchurl {
sha256 = "07a59jk9b2hh49v5lcpckp64f5lny9sq8h0h2p2jcs9cqazf6q9s";
sha256 = "0pvy4qirfjdfm8aj6x5rkbgl7hk3jfa2s21qkk8ic5dqfjjab75n";
url = "mirror://sourceforge/scanbd/${name}.tgz";
};

View File

@ -2,23 +2,23 @@
python3.pkgs.buildPythonApplication rec {
name = "esptool-${version}";
version = "2.1";
version = "2.3.1";
src = fetchFromGitHub {
owner = "espressif";
repo = "esptool";
rev = "v${version}";
sha256 = "137p0kcscly95qpjzgx1yxm8k2wf5y9v3srvlhp2ajniirgv8ijv";
sha256 = "0gwnl6z5s2ax07l3n38h9hdyz71pn8lzn4fybcwyrii0bj2kapvc";
};
buildInputs = with python3.pkgs; [ flake8 flake8-future-import ];
checkInputs = with python3.pkgs; [ flake8 flake8-future-import flake8-import-order ];
propagatedBuildInputs = with python3.pkgs; [ pyserial pyaes ecdsa openssl ];
meta = with stdenv.lib; {
description = "ESP8266 and ESP32 serial bootloader utility";
homepage = https://github.com/espressif/esptool;
license = licenses.gpl2;
maintainers = [ maintainers.dezgeg ];
maintainers = with maintainers; [ dezgeg dotlambda ];
platforms = platforms.linux;
};
}

View File

@ -1,4 +1,6 @@
{ stdenv, fetchFromGitHub, rustPlatform, cmake, perl, pkgconfig, zlib }:
{ stdenv, fetchFromGitHub, rustPlatform, cmake, perl, pkgconfig, zlib
, darwin, libiconv
}:
with rustPlatform;
@ -16,7 +18,10 @@ buildRustPackage rec {
};
nativeBuildInputs = [ cmake pkgconfig perl ];
buildInputs = [ zlib ];
buildInputs = [ zlib ]
++ stdenv.lib.optionals stdenv.isDarwin [
libiconv darwin.apple_sdk.frameworks.Security ]
;
# Some tests fail, but Travis ensures a proper build
doCheck = false;

View File

@ -2,7 +2,7 @@
buildGoPackage rec {
name = "phraseapp-client-${version}";
version = "1.4.5";
version = "1.6.0";
goPackagePath = "github.com/phrase/phraseapp-client";
subPackages = [ "." ];
@ -11,7 +11,7 @@ buildGoPackage rec {
owner = "phrase";
repo = "phraseapp-client";
rev = version;
sha256 = "0zky7jcs7h6zmvkb0na4la6h7g63jlrziifqk831fd1gspdzgajp";
sha256 = "0rgwl0rgkci045hg36s0q8jwkni1hzapqpi0mc0gk3rl7nagw622";
};
meta = with stdenv.lib; {

View File

@ -2,13 +2,13 @@
python2Packages.buildPythonApplication rec {
name = "s3cmd-${version}";
version = "1.6.1";
version = "2.0.1";
src = fetchFromGitHub {
owner = "s3tools";
repo = "s3cmd";
rev = "v${version}";
sha256 = "0aan6v1qj0pdkddhhkbaky44d54irm1pa8mkn52i2j86nb2rkcf9";
sha256 = "198hzzplci57sb8hdan30nbakslawmijfw0j71wjvq85n3xn6qsl";
};
propagatedBuildInputs = with python2Packages; [ python_magic dateutil ];

View File

@ -7159,6 +7159,8 @@ with pkgs;
red = callPackage ../development/interpreters/red { };
regextester = callPackage ../applications/misc/regextester { };
regina = callPackage ../development/interpreters/regina { };
inherit (ocamlPackages) reason;
@ -9117,6 +9119,7 @@ with pkgs;
gnome-sharp = callPackage ../development/libraries/gnome-sharp {};
granite = callPackage ../development/libraries/granite { };
elementary-cmake-modules = callPackage ../development/libraries/elementary-cmake-modules { };
gtk2 = callPackage ../development/libraries/gtk+/2.x.nix {
cupsSupport = config.gtk2.cups or stdenv.isLinux;
@ -10461,7 +10464,7 @@ with pkgs;
ffmpeg = ffmpeg_2;
};
mkvtoolnix = callPackage ../applications/video/mkvtoolnix { };
mkvtoolnix = libsForQt5.callPackage ../applications/video/mkvtoolnix { };
mkvtoolnix-cli = callPackage ../applications/video/mkvtoolnix {
withGUI = false;
@ -16533,6 +16536,8 @@ with pkgs;
mm = callPackage ../applications/networking/instant-messengers/mm { };
mpc-qt = libsForQt5.callPackage ../applications/video/mpc-qt { };
mplayer = callPackage ../applications/video/mplayer ({
pulseSupport = config.pulseaudio or false;
libdvdnav = libdvdnav_4_2_1;

View File

@ -6004,6 +6004,8 @@ in {
pyhomematic = callPackage ../development/python-modules/pyhomematic { };
pylama = callPackage ../development/python-modules/pylama { };
pyphen = callPackage ../development/python-modules/pyphen {};
pypoppler = buildPythonPackage rec {
@ -7556,6 +7558,8 @@ in {
flake8-future-import = callPackage ../development/python-modules/flake8-future-import { };
flake8-import-order = callPackage ../development/python-modules/flake8-import-order { };
flaky = buildPythonPackage rec {
name = "flaky-${version}";
version = "3.1.0";