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

This commit is contained in:
Frederik Rietdijk 2017-09-28 10:51:26 +02:00
commit 4e22e88b91
63 changed files with 831 additions and 693 deletions

View File

@ -281,6 +281,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
url = https://fedoraproject.org/wiki/Licensing/GPL_Classpath_Exception; url = https://fedoraproject.org/wiki/Licensing/GPL_Classpath_Exception;
}; };
hpnd = spdx {
spdxId = "HPND";
fullName = "Historic Permission Notice and Disclaimer";
};
# Intel's license, seems free # Intel's license, seems free
iasl = { iasl = {
fullName = "iASL"; fullName = "iASL";

View File

@ -335,6 +335,13 @@ FLUSH PRIVILEGES;
was removed and should not be needed anymore.</para> was removed and should not be needed anymore.</para>
</listitem> </listitem>
<listitem>
<para>
Redis has been updated to version 4 which mandates a cluster
mass-restart, due to changes in the network handling, in order
to ensure compatibility with networks NATing traffic.
</para>
</listitem>
</itemizedlist> </itemizedlist>
<para>Other notable improvements:</para> <para>Other notable improvements:</para>
@ -432,6 +439,16 @@ FLUSH PRIVILEGES;
version, kernel version and build date of all bootable generations. version, kernel version and build date of all bootable generations.
</para> </para>
</listitem> </listitem>
<listitem>
<para>
The dnscrypt-proxy service now defaults to using a random upstream resolver,
selected from the list of public non-logging resolvers with DNSSEC support.
Existing configurations can be migrated to this mode of operation by
omitting the <option>services.dnscrypt-proxy.resolverName</option> option
or setting it to <literal>"random"</literal>.
</para>
</listitem>
</itemizedlist> </itemizedlist>
</section> </section>

View File

@ -40,6 +40,12 @@ in
{ {
config = mkIf enabled { config = mkIf enabled {
assertions = [
{
assertion = services.xserver.displayManager.gdm.wayland;
message = "NVidia drivers don't support wayland";
}
];
services.xserver.drivers = singleton services.xserver.drivers = singleton
{ name = "nvidia"; modules = [ nvidia_x11.bin ]; libPath = [ nvidia_x11 ]; }; { name = "nvidia"; modules = [ nvidia_x11.bin ]; libPath = [ nvidia_x11 ]; };
@ -62,11 +68,16 @@ in
boot.extraModulePackages = [ nvidia_x11.bin ]; boot.extraModulePackages = [ nvidia_x11.bin ];
# nvidia-uvm is required by CUDA applications. # nvidia-uvm is required by CUDA applications.
boot.kernelModules = [ "nvidia-uvm" ]; boot.kernelModules = [ "nvidia-uvm" ] ++
lib.optionals config.services.xserver.enable [ "nvidia" "nvidia_modeset" "nvidia_drm" ];
# Create /dev/nvidia-uvm when the nvidia-uvm module is loaded. # Create /dev/nvidia-uvm when the nvidia-uvm module is loaded.
services.udev.extraRules = services.udev.extraRules =
'' ''
KERNEL=="nvidia", RUN+="${pkgs.stdenv.shell} -c 'mknod -m 666 /dev/nvidiactl c $(grep nvidia-frontend /proc/devices | cut -d \ -f 1) 255'"
KERNEL=="nvidia_modeset", RUN+="${pkgs.stdenv.shell} -c 'mknod -m 666 /dev/nvidia-modeset c $(grep nvidia-frontend /proc/devices | cut -d \ -f 1) 254'"
KERNEL=="card*", SUBSYSTEM=="drm", DRIVERS=="nvidia", RUN+="${pkgs.stdenv.shell} -c 'mknod -m 666 /dev/nvidia%n c $(grep nvidia-frontend /proc/devices | cut -d \ -f 1) %n'"
KERNEL=="nvidia_uvm", RUN+="${pkgs.stdenv.shell} -c 'mknod -m 666 /dev/nvidia-uvm c $(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 0'" KERNEL=="nvidia_uvm", RUN+="${pkgs.stdenv.shell} -c 'mknod -m 666 /dev/nvidia-uvm c $(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 0'"
''; '';

View File

@ -361,6 +361,9 @@ in
{ source = config.isoImage.splashImage; { source = config.isoImage.splashImage;
target = "/isolinux/background.png"; target = "/isolinux/background.png";
} }
{ source = pkgs.writeText "version" config.system.nixosVersion;
target = "/version.txt";
}
] ++ optionals config.isoImage.makeEfiBootable [ ] ++ optionals config.isoImage.makeEfiBootable [
{ source = efiImg; { source = efiImg;
target = "/boot/efi.img"; target = "/boot/efi.img";

View File

@ -17,20 +17,22 @@ in
}; };
config = mkOption { config = mkOption {
default = ""; default = "";
description = "monit.conf content"; description = "monitrc content";
}; };
}; };
}; };
config = mkIf config.services.monit.enable { config = mkIf config.services.monit.enable {
environment.systemPackages = [ pkgs.monit ];
environment.etc = [ environment.etc = [
{ {
source = pkgs.writeTextFile { source = pkgs.writeTextFile {
name = "monit.conf"; name = "monitrc";
text = config.services.monit.config; text = config.services.monit.config;
}; };
target = "monit.conf"; target = "monitrc";
mode = "0400"; mode = "0400";
} }
]; ];
@ -40,9 +42,9 @@ in
after = [ "network.target" ]; after = [ "network.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
serviceConfig = { serviceConfig = {
ExecStart = "${pkgs.monit}/bin/monit -I -c /etc/monit.conf"; ExecStart = "${pkgs.monit}/bin/monit -I -c /etc/monitrc";
ExecStop = "${pkgs.monit}/bin/monit -c /etc/monit.conf quit"; ExecStop = "${pkgs.monit}/bin/monit -c /etc/monitrc quit";
ExecReload = "${pkgs.monit}/bin/monit -c /etc/monit.conf reload"; ExecReload = "${pkgs.monit}/bin/monit -c /etc/monitrc reload";
KillMode = "process"; KillMode = "process";
Restart = "always"; Restart = "always";
}; };

View File

@ -183,6 +183,7 @@ in
ExecReload = "${cfg.package.bin}/bin/consul reload"; ExecReload = "${cfg.package.bin}/bin/consul reload";
PermissionsStartOnly = true; PermissionsStartOnly = true;
User = if cfg.dropPrivileges then "consul" else null; User = if cfg.dropPrivileges then "consul" else null;
Restart = "on-failure";
TimeoutStartSec = "0"; TimeoutStartSec = "0";
} // (optionalAttrs (cfg.leaveOnStop) { } // (optionalAttrs (cfg.leaveOnStop) {
ExecStop = "${cfg.package.bin}/bin/consul leave"; ExecStop = "${cfg.package.bin}/bin/consul leave";

View File

@ -163,6 +163,12 @@ in
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ "network.target" ]; after = [ "network.target" ];
path = [ data.package ]; path = [ data.package ];
restartTriggers =
let
drvlist = [ config.environment.etc."tinc/${network}/tinc.conf".source ]
++ mapAttrsToList (host: _: config.environment.etc."tinc/${network}/hosts/${host}".source) data.hosts;
in # drvlist might be too long to be used directly
[ (builtins.hashString "sha256" (concatMapStrings (d: d.outPath) drvlist)) ];
serviceConfig = { serviceConfig = {
Type = "simple"; Type = "simple";
Restart = "always"; Restart = "always";

View File

@ -148,6 +148,7 @@ in {
wants = [ "network.target" ]; wants = [ "network.target" ];
requires = lib.concatMap deviceUnit ifaces; requires = lib.concatMap deviceUnit ifaces;
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
stopIfChanged = false;
path = [ pkgs.wpa_supplicant ]; path = [ pkgs.wpa_supplicant ];

View File

@ -212,6 +212,14 @@ in
''; '';
}; };
openFirewall = mkOption {
type = types.bool;
default = false;
description = ''
Whether to open ports in the firewall for ZNC.
'';
};
zncConf = mkOption { zncConf = mkOption {
default = ""; default = "";
example = "See: http://wiki.znc.in/Configuration"; example = "See: http://wiki.znc.in/Configuration";
@ -276,14 +284,6 @@ in
''; '';
}; };
openFirewall = mkOption {
type = types.bool;
default = false;
description = ''
Whether to open ports in the firewall for ZNC.
'';
};
passBlock = mkOption { passBlock = mkOption {
example = defaultPassBlock; example = defaultPassBlock;
type = types.string; type = types.string;
@ -359,7 +359,7 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
networking.firewall = mkIf cfg.openFirewall { networking.firewall = mkIf cfg.openFirewall {
allowedTCPPorts = [ cfg.port ]; allowedTCPPorts = [ cfg.confOptions.port ];
}; };
systemd.services.znc = { systemd.services.znc = {

View File

@ -64,6 +64,14 @@ in
}; };
}; };
wayland = mkOption {
default = true;
description = ''
Allow GDM run on Wayland instead of Xserver
'';
type = types.bool;
};
}; };
}; };
@ -94,6 +102,7 @@ in
# GDM needs different xserverArgs, presumable because using wayland by default. # GDM needs different xserverArgs, presumable because using wayland by default.
services.xserver.tty = null; services.xserver.tty = null;
services.xserver.display = null; services.xserver.display = null;
services.xserver.verbose = null;
services.xserver.displayManager.job = services.xserver.displayManager.job =
{ {
@ -139,6 +148,7 @@ in
# presented and there's a little delay. # presented and there's a little delay.
environment.etc."gdm/custom.conf".text = '' environment.etc."gdm/custom.conf".text = ''
[daemon] [daemon]
WaylandEnable=${if cfg.gdm.wayland then "true" else "false"}
${optionalString cfg.gdm.autoLogin.enable ( ${optionalString cfg.gdm.autoLogin.enable (
if cfg.gdm.autoLogin.delay > 0 then '' if cfg.gdm.autoLogin.delay > 0 then ''
TimedLoginEnable=true TimedLoginEnable=true

View File

@ -480,6 +480,15 @@ in
''; '';
}; };
verbose = mkOption {
type = types.nullOr types.int;
default = 3;
example = 7;
description = ''
Controls verbosity of X logging.
'';
};
useGlamor = mkOption { useGlamor = mkOption {
type = types.bool; type = types.bool;
default = false; default = false;
@ -631,10 +640,11 @@ in
[ "-config ${configFile}" [ "-config ${configFile}"
"-xkbdir" "${cfg.xkbDir}" "-xkbdir" "${cfg.xkbDir}"
# Log at the default verbosity level to stderr rather than /var/log/X.*.log. # Log at the default verbosity level to stderr rather than /var/log/X.*.log.
"-verbose" "3" "-logfile" "/dev/null" "-logfile" "/dev/null"
] ++ optional (cfg.display != null) ":${toString cfg.display}" ] ++ optional (cfg.display != null) ":${toString cfg.display}"
++ optional (cfg.tty != null) "vt${toString cfg.tty}" ++ optional (cfg.tty != null) "vt${toString cfg.tty}"
++ optional (cfg.dpi != null) "-dpi ${toString cfg.dpi}" ++ optional (cfg.dpi != null) "-dpi ${toString cfg.dpi}"
++ optional (cfg.verbose != null) "-verbose ${toString cfg.verbose}"
++ optional (!cfg.enableTCP) "-nolisten tcp" ++ optional (!cfg.enableTCP) "-nolisten tcp"
++ optional (cfg.autoRepeatDelay != null) "-ardelay ${toString cfg.autoRepeatDelay}" ++ optional (cfg.autoRepeatDelay != null) "-ardelay ${toString cfg.autoRepeatDelay}"
++ optional (cfg.autoRepeatInterval != null) "-arinterval ${toString cfg.autoRepeatInterval}" ++ optional (cfg.autoRepeatInterval != null) "-arinterval ${toString cfg.autoRepeatInterval}"

View File

@ -875,7 +875,12 @@ in
systemd.services.systemd-remount-fs.restartIfChanged = false; systemd.services.systemd-remount-fs.restartIfChanged = false;
systemd.services.systemd-update-utmp.restartIfChanged = false; systemd.services.systemd-update-utmp.restartIfChanged = false;
systemd.services.systemd-user-sessions.restartIfChanged = false; # Restart kills all active sessions. systemd.services.systemd-user-sessions.restartIfChanged = false; # Restart kills all active sessions.
systemd.services.systemd-logind.restartTriggers = [ config.environment.etc."systemd/logind.conf".source ]; # Restarting systemd-logind breaks X11
# - upstream commit: https://cgit.freedesktop.org/xorg/xserver/commit/?id=dc48bd653c7e101
# - systemd announcement: https://github.com/systemd/systemd/blob/22043e4317ecd2bc7834b48a6d364de76bb26d91/NEWS#L103-L112
# - this might be addressed in the future by xorg
#systemd.services.systemd-logind.restartTriggers = [ config.environment.etc."systemd/logind.conf".source ];
systemd.services.systemd-logind.restartIfChanged = false;
systemd.services.systemd-logind.stopIfChanged = false; systemd.services.systemd-logind.stopIfChanged = false;
systemd.services.systemd-journald.restartTriggers = [ config.environment.etc."systemd/journald.conf".source ]; systemd.services.systemd-journald.restartTriggers = [ config.environment.etc."systemd/journald.conf".source ];
systemd.services.systemd-journald.stopIfChanged = false; systemd.services.systemd-journald.stopIfChanged = false;

View File

@ -98,22 +98,10 @@ in
'') config.i18n.consoleColors} '') config.i18n.consoleColors}
''; '';
/* XXX: systemd-vconsole-setup needs a "main" terminal. By default
* /dev/tty0 is used which wouldn't work when the service is restarted
* from X11. We set this to /dev/tty1; not ideal because it may also be
* owned by X11 or something else.
*
* See #22470.
*/
systemd.services."systemd-vconsole-setup" = systemd.services."systemd-vconsole-setup" =
{ wantedBy = [ "sysinit.target" ]; { before = [ "display-manager.service" ];
before = [ "display-manager.service" ];
after = [ "systemd-udev-settle.service" ]; after = [ "systemd-udev-settle.service" ];
restartTriggers = [ vconsoleConf kbdEnv ]; restartTriggers = [ vconsoleConf kbdEnv ];
serviceConfig.ExecStart = [
""
"${pkgs.systemd}/lib/systemd/systemd-vconsole-setup /dev/tty1"
];
}; };
} }

View File

@ -122,24 +122,32 @@ let
# Set the default gateway. # Set the default gateway.
${optionalString (cfg.defaultGateway != null && cfg.defaultGateway.address != "") '' ${optionalString (cfg.defaultGateway != null && cfg.defaultGateway.address != "") ''
# FIXME: get rid of "|| true" (necessary to make it idempotent). ${optionalString (cfg.defaultGateway.interface != null) ''
ip route add default ${optionalString (cfg.defaultGateway.metric != null) ip route replace ${cfg.defaultGateway.address} dev ${cfg.defaultGateway.interface} ${optionalString (cfg.defaultGateway.metric != null)
"metric ${toString cfg.defaultGateway.metric}"
} proto static
''}
ip route replace default ${optionalString (cfg.defaultGateway.metric != null)
"metric ${toString cfg.defaultGateway.metric}" "metric ${toString cfg.defaultGateway.metric}"
} via "${cfg.defaultGateway.address}" ${ } via "${cfg.defaultGateway.address}" ${
optionalString (cfg.defaultGatewayWindowSize != null) optionalString (cfg.defaultGatewayWindowSize != null)
"window ${toString cfg.defaultGatewayWindowSize}"} ${ "window ${toString cfg.defaultGatewayWindowSize}"} ${
optionalString (cfg.defaultGateway.interface != null) optionalString (cfg.defaultGateway.interface != null)
"dev ${cfg.defaultGateway.interface}"} proto static || true "dev ${cfg.defaultGateway.interface}"} proto static
''} ''}
${optionalString (cfg.defaultGateway6 != null && cfg.defaultGateway6.address != "") '' ${optionalString (cfg.defaultGateway6 != null && cfg.defaultGateway6.address != "") ''
# FIXME: get rid of "|| true" (necessary to make it idempotent). ${optionalString (cfg.defaultGateway6.interface != null) ''
ip -6 route add ::/0 ${optionalString (cfg.defaultGateway6.metric != null) ip -6 route replace ${cfg.defaultGateway6.address} dev ${cfg.defaultGateway6.interface} ${optionalString (cfg.defaultGateway6.metric != null)
"metric ${toString cfg.defaultGateway6.metric}"
} proto static
''}
ip -6 route replace default ${optionalString (cfg.defaultGateway6.metric != null)
"metric ${toString cfg.defaultGateway6.metric}" "metric ${toString cfg.defaultGateway6.metric}"
} via "${cfg.defaultGateway6.address}" ${ } via "${cfg.defaultGateway6.address}" ${
optionalString (cfg.defaultGatewayWindowSize != null) optionalString (cfg.defaultGatewayWindowSize != null)
"window ${toString cfg.defaultGatewayWindowSize}"} ${ "window ${toString cfg.defaultGatewayWindowSize}"} ${
optionalString (cfg.defaultGateway6.interface != null) optionalString (cfg.defaultGateway6.interface != null)
"dev ${cfg.defaultGateway6.interface}"} proto static || true "dev ${cfg.defaultGateway6.interface}"} proto static
''} ''}
''; '';
}; };

View File

@ -56,9 +56,7 @@ import ./make-test.nix ({ pkgs, ...} : rec {
src = ./mesos_test.py; src = ./mesos_test.py;
phases = [ "installPhase" "fixupPhase" ]; phases = [ "installPhase" "fixupPhase" ];
installPhase = '' installPhase = ''
mkdir $out install -Dvm 0755 $src $out/bin/mesos_test.py
cp $src $out/mesos_test.py
chmod +x $out/mesos_test.py
echo "done" > test.result echo "done" > test.result
tar czf $out/test.tar.gz test.result tar czf $out/test.tar.gz test.result
@ -74,18 +72,18 @@ import ./make-test.nix ({ pkgs, ...} : rec {
$master->waitForOpenPort(5050); $master->waitForOpenPort(5050);
$slave->waitForOpenPort(5051); $slave->waitForOpenPort(5051);
# is slave registred? # is slave registered?
$master->waitUntilSucceeds("curl -s --fail http://master:5050/master/slaves". $master->waitUntilSucceeds("curl -s --fail http://master:5050/master/slaves".
" | grep -q \"\\\"hostname\\\":\\\"slave\\\"\""); " | grep -q \"\\\"hostname\\\":\\\"slave\\\"\"");
# try to run docker image # try to run docker image
$master->succeed("${pkgs.mesos}/bin/mesos-execute --master=master:5050". $master->succeed("${pkgs.mesos}/bin/mesos-execute --master=master:5050".
" --resources=\"cpus:0.1;mem:32\" --name=simple-docker". " --resources=\"cpus:0.1;mem:32\" --name=simple-docker".
" --containerizer=mesos --docker_image=echo:latest". " --containerizer=mesos --docker_image=echo:latest".
" --shell=true --command=\"echo done\" | grep -q TASK_FINISHED"); " --shell=true --command=\"echo done\" | grep -q TASK_FINISHED");
# simple command with .tar.gz uri # simple command with .tar.gz uri
$master->succeed("${testFramework}/mesos_test.py master ". $master->succeed("${testFramework}/bin/mesos_test.py master ".
"${testFramework}/test.tar.gz"); "${testFramework}/test.tar.gz");
''; '';
}) })

View File

@ -0,0 +1,43 @@
{ stdenv, fetchFromGitHub, pkgconfig, autoreconfHook, openssl, db48, boost
, zlib, miniupnpc, qt5, utillinux, protobuf, qrencode, libevent
, withGui }:
with stdenv.lib;
stdenv.mkDerivation rec {
name = "bitcoin" + (toString (optional (!withGui) "d")) + "-abc-" + version;
version = "0.15.0";
src = fetchFromGitHub {
owner = "bitcoin-ABC";
repo = "bitcoin-abc";
rev = "v${version}";
sha256 = "1fygn6cc99iasg5g5jyps5ps873hfnn4ln4hsmcwlwiqd591qxyv";
};
patches = [ ./fix-bitcoin-qt-build.patch ];
nativeBuildInputs = [ pkgconfig autoreconfHook ];
buildInputs = [ openssl db48 boost zlib
miniupnpc utillinux protobuf libevent ]
++ optionals withGui [ qt5.qtbase qt5.qttools qrencode ];
configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ]
++ optionals withGui [ "--with-gui=qt5" ];
meta = {
description = "Peer-to-peer electronic cash system (Cash client)";
longDescription= ''
Bitcoin ABC is the name of open source software which enables the use of Bitcoin.
It is designed to facilite a hard fork to increase Bitcoin's block size limit.
"ABC" stands for "Adjustable Blocksize Cap".
Bitcoin ABC is a fork of the Bitcoin Core software project.
'';
homepage = https://bitcoinabc.org/;
maintainers = with maintainers; [ lassulus ];
license = licenses.mit;
platforms = platforms.unix;
};
}

View File

@ -5,6 +5,9 @@ rec {
bitcoin = callPackage ./bitcoin.nix { withGui = true; }; bitcoin = callPackage ./bitcoin.nix { withGui = true; };
bitcoind = callPackage ./bitcoin.nix { withGui = false; }; bitcoind = callPackage ./bitcoin.nix { withGui = false; };
bitcoin-abc = callPackage ./bitcoin-abc.nix { withGui = true; };
bitcoind-abc = callPackage ./bitcoin-abc.nix { withGui = false; };
bitcoin-unlimited = callPackage ./bitcoin-unlimited.nix { withGui = true; }; bitcoin-unlimited = callPackage ./bitcoin-unlimited.nix { withGui = true; };
bitcoind-unlimited = callPackage ./bitcoin-unlimited.nix { withGui = false; }; bitcoind-unlimited = callPackage ./bitcoin-unlimited.nix { withGui = false; };

View File

@ -0,0 +1,15 @@
--- bitcoin-abc-v0.15.0-src/build-aux/m4/bitcoin_qt.m4 1970-01-01 01:00:01.000000000 +0100
+++ bitcoin-abc-v0.15.0-src.org/build-aux/m4/bitcoin_qt.m4 2017-09-27 23:38:44.748384197 +0100
@@ -35,11 +35,7 @@
dnl Output: $1 is set to the path of $2 if found. $2 are searched in order.
AC_DEFUN([BITCOIN_QT_PATH_PROGS],[
BITCOIN_QT_CHECK([
- if test "x$3" != "x"; then
- AC_PATH_PROGS($1,$2,,$3)
- else
- AC_PATH_PROGS($1,$2)
- fi
+ AC_PATH_PROGS($1,$2)
if test "x$$1" = "x" && test "x$4" != "xyes"; then
BITCOIN_QT_FAIL([$1 not found])
fi

View File

@ -1,6 +1,8 @@
{ stdenv, fetchurl, fetchpatch, pkgconfig { stdenv, lib, fetchurl, fetchpatch, pkgconfig
, zlib, freetype, libjpeg, jbig2dec, openjpeg , freetype, harfbuzz, openjpeg, jbig2dec
, libX11, libXcursor, libXrandr, libXinerama, libXext, harfbuzz, mesa }: , enableX11 ? true, libX11, libXext
, enableCurl ? true, curl, openssl
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "1.11"; version = "1.11";
@ -28,7 +30,9 @@ stdenv.mkDerivation rec {
makeFlags = [ "prefix=$(out)" ]; makeFlags = [ "prefix=$(out)" ];
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];
buildInputs = [ zlib libX11 libXcursor libXext harfbuzz mesa libXrandr libXinerama freetype libjpeg jbig2dec openjpeg ]; buildInputs = [ freetype harfbuzz openjpeg jbig2dec ]
++ lib.optionals enableX11 [ libX11 libXext ]
++ lib.optionals enableCurl [ curl openssl ];
outputs = [ "bin" "dev" "out" "man" "doc" ]; outputs = [ "bin" "dev" "out" "man" "doc" ];
preConfigure = '' preConfigure = ''

View File

@ -1,18 +1,18 @@
From 0defcf6ec155899c414f66524b7df629f59327f0 Mon Sep 17 00:00:00 2001 From 314bcebfcd1759981ce12255be29d8ae68cd400b Mon Sep 17 00:00:00 2001
From: Nikolay Amiantov <ab@fmap.me> From: Nikolay Amiantov <ab@fmap.me>
Date: Wed, 23 Nov 2016 00:40:48 +0300 Date: Wed, 23 Nov 2016 00:40:48 +0300
Subject: [PATCH] Build and use one version of preprocessor library Subject: [PATCH] Build and use one version of preprocessor library
--- ---
octoprint_m33fio/__init__.py | 67 ++---------------------------------------- octoprint_m33fio/__init__.py | 73 ++----------------------------------------
shared library source/Makefile | 62 +++----------------------------------- shared library source/Makefile | 62 +++--------------------------------
2 files changed, 6 insertions(+), 123 deletions(-) 2 files changed, 6 insertions(+), 129 deletions(-)
diff --git a/octoprint_m33fio/__init__.py b/octoprint_m33fio/__init__.py diff --git a/octoprint_m33fio/__init__.py b/octoprint_m33fio/__init__.py
index 4b43c59..d1259e4 100755 index 054870a..4d5ecc1 100755
--- a/octoprint_m33fio/__init__.py --- a/octoprint_m33fio/__init__.py
+++ b/octoprint_m33fio/__init__.py +++ b/octoprint_m33fio/__init__.py
@@ -1062,71 +1062,8 @@ class M33FioPlugin( @@ -1189,78 +1189,9 @@ class M33FioPlugin(
# Check if using shared library or checking if it is usable # Check if using shared library or checking if it is usable
if self._settings.get_boolean(["UseSharedLibrary"]) or isUsable : if self._settings.get_boolean(["UseSharedLibrary"]) or isUsable :
@ -54,7 +54,9 @@ index 4b43c59..d1259e4 100755
- -
- # Otherwise check if running on Windows and using an i386 or x86-64 device - # Otherwise check if running on Windows and using an i386 or x86-64 device
- elif platform.uname()[0].startswith("Windows") and (platform.uname()[4].endswith("86") or platform.uname()[4].endswith("64")) : - elif platform.uname()[0].startswith("Windows") and (platform.uname()[4].endswith("86") or platform.uname()[4].endswith("64")) :
- + # Set shared library
+ self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace('\\', '/') + "/static/libraries/libpreprocessor.so")
- # Check if Python is running as 32-bit - # Check if Python is running as 32-bit
- if platform.architecture()[0].startswith("32") : - if platform.architecture()[0].startswith("32") :
- -
@ -81,11 +83,16 @@ index 4b43c59..d1259e4 100755
- -
- # Set shared library - # Set shared library
- self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_x86-64.dylib") - self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_x86-64.dylib")
+ # Set shared library -
+ self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace('\\', '/') + "/static/libraries/libpreprocessor.so") - # Otherwise check if running FreeBSD
- elif platform.uname()[0].startswith("FreeBSD") :
-
- # TODO: Compile FreeBSD shared library pre-processors
- pass
-
# Check if shared library was set # Check if shared library was set
if self.sharedLibrary : if self.sharedLibrary :
diff --git a/shared library source/Makefile b/shared library source/Makefile diff --git a/shared library source/Makefile b/shared library source/Makefile
index 792b4f4..4c74f5c 100755 index 792b4f4..4c74f5c 100755
--- a/shared library source/Makefile --- a/shared library source/Makefile
@ -164,5 +171,5 @@ index 792b4f4..4c74f5c 100755
clean: clean:
rm -f ../octoprint_m33fio/static/libraries/$(PROG) rm -f ../octoprint_m33fio/static/libraries/$(PROG)
-- --
2.11.0 2.14.1

View File

@ -12,13 +12,13 @@ let
m33-fio = buildPlugin rec { m33-fio = buildPlugin rec {
name = "M33-Fio-${version}"; name = "M33-Fio-${version}";
version = "1.20"; version = "1.21";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "donovan6000"; owner = "donovan6000";
repo = "M33-Fio"; repo = "M33-Fio";
rev = "V${version}"; rev = "V${version}";
sha256 = "1ng7lzlkqsjcr1w7wgzwsqkkvcvpajcj2cwqlffh95916sw8n767"; sha256 = "1la3611kkqn8yiwjn6cizc45ri8pnk6ckld1na4nk6mqk88jvjq7";
}; };
patches = [ patches = [

View File

@ -15,7 +15,6 @@
, noto-fonts-emoji , noto-fonts-emoji
# Extensions, common # Extensions, common
, unzip
, zip , zip
# HTTPS Everywhere # HTTPS Everywhere
@ -27,6 +26,7 @@
# Customization # Customization
, extraPrefs ? "" , extraPrefs ? ""
, extraExtensions ? [ ]
}: }:
let let
@ -36,144 +36,19 @@ let
sha256 = "0j37mqldj33fnzghxifvy6v8vdwkcz0i4z81prww64md5s8qcsa9"; sha256 = "0j37mqldj33fnzghxifvy6v8vdwkcz0i4z81prww64md5s8qcsa9";
}; };
# Each extension drv produces an output comprising an unpacked .xpi firefoxExtensions = import ./extensions.nix {
# named after the extension uuid, as it would appear under inherit stdenv fetchurl fetchgit zip
# `firefox/extensions'. git libxml2 python27 python27Packages rsync;
firefoxExtensions = {
https-everywhere = stdenv.mkDerivation rec {
name = "https-everywhere-${version}";
version = "5.2.21";
extid = "https-everywhere-eff@eff.org";
src = fetchgit {
url = "https://git.torproject.org/https-everywhere.git";
rev = "refs/tags/${version}";
sha256 = "0z9madihh4b4z4blvfmh6w1hsv8afyi0x7b243nciq9r4w55xgfa";
};
nativeBuildInputs = [
git
libxml2 # xmllint
python27
python27Packages.lxml
rsync
unzip
zip
];
unpackPhase = ''
cp -dR --no-preserve=mode "$src" src
cd src
'';
# Beware: the build expects translations/ to be non-empty (which it
# will be with submodules initialized).
buildPhase = ''
$shell ./makexpi.sh ${version} --no-recurse
'';
installPhase = ''
mkdir $out
unzip -d "$out/$extid" "pkg/https-everywhere-$version-eff.xpi"
'';
meta = {
homepage = https://gitweb.torproject.org/https-everywhere.git/;
};
};
noscript = stdenv.mkDerivation rec {
name = "noscript-${version}";
version = "5.0.10";
extid = "{73a6fe31-595d-460b-a920-fcc0f8843232}";
src = fetchurl {
url = "https://secure.informaction.com/download/releases/noscript-${version}.xpi";
sha256 = "18k5karbaj5mhd9cyjbqgik6044bw88rjalkh6anjanxbn503j6g";
};
nativeBuildInputs = [ unzip ];
unpackPhase = ":";
installPhase = ''
mkdir $out
unzip -d "$out/$extid" "$src"
'';
};
torbutton = stdenv.mkDerivation rec {
name = "torbutton-${version}";
version = "1.9.8.1";
extid = "torbutton@torproject.org";
src = fetchgit {
url = "https://git.torproject.org/torbutton.git";
rev = "refs/tags/${version}";
sha256 = "1amp0c9ky0a7fsa0bcbi6n6ginw7s2g3an4rj7kvc1lxmrcsm65l";
};
nativeBuildInputs = [ unzip zip ];
unpackPhase = ''
cp -dR --no-preserve=mode "$src" src
cd src
'';
buildPhase = ''
$shell ./makexpi.sh
'';
installPhase = ''
mkdir $out
unzip -d "$out/$extid" "pkg/torbutton-$version.xpi"
'';
meta = {
homepage = https://gitweb.torproject.org/torbutton.git/;
};
};
tor-launcher = stdenv.mkDerivation rec {
name = "tor-launcher-${version}";
version = "0.2.12.3";
extid = "tor-launcher@torproject.org";
src = fetchgit {
url = "https://git.torproject.org/tor-launcher.git";
rev = "refs/tags/${version}";
sha256 = "0126x48pjiy2zm4l8jzhk70w24hviaz560ffp4lb9x0ar615bc9q";
};
nativeBuildInputs = [ unzip zip ];
unpackPhase = ''
cp -dR --no-preserve=mode "$src" src
cd src
'';
buildPhase = ''
make package
'';
installPhase = ''
mkdir $out
unzip -d "$out/$extid" "pkg/tor-launcher-$version.xpi"
'';
meta = {
homepage = https://gitweb.torproject.org/tor-launcher.git/;
};
};
}; };
extensionsEnv = symlinkJoin { extensionsEnv = symlinkJoin {
name = "tor-browser-extensions"; name = "tor-browser-extensions";
paths = with firefoxExtensions; [ https-everywhere noscript torbutton tor-launcher ]; paths = with firefoxExtensions; [
https-everywhere
noscript
torbutton
tor-launcher
] ++ extraExtensions;
}; };
fontsEnv = symlinkJoin { fontsEnv = symlinkJoin {

View File

@ -0,0 +1,122 @@
{ stdenv
, fetchgit
, fetchurl
# common
, zip
# HTTPS Everywhere
, git
, libxml2 # xmllint
, python27
, python27Packages
, rsync
}:
{
https-everywhere = stdenv.mkDerivation rec {
name = "https-everywhere-${version}";
version = "5.2.21";
extid = "https-everywhere-eff@eff.org";
src = fetchgit {
url = "https://git.torproject.org/https-everywhere.git";
rev = "refs/tags/${version}";
sha256 = "0z9madihh4b4z4blvfmh6w1hsv8afyi0x7b243nciq9r4w55xgfa";
};
nativeBuildInputs = [
git
libxml2 # xmllint
python27
python27Packages.lxml
rsync
zip
];
unpackPhase = ''
cp -dR --no-preserve=mode "$src" src && cd src
'';
buildPhase = ''
$shell ./makexpi.sh ${version} --no-recurse
'';
installPhase = ''
install -m 444 -D pkg/https-everywhere-$version-eff.xpi "$out/$extid.xpi"
'';
};
noscript = stdenv.mkDerivation rec {
name = "noscript-${version}";
version = "5.0.10";
extid = "{73a6fe31-595d-460b-a920-fcc0f8843232}";
src = fetchurl {
url = "https://secure.informaction.com/download/releases/noscript-${version}.xpi";
sha256 = "18k5karbaj5mhd9cyjbqgik6044bw88rjalkh6anjanxbn503j6g";
};
unpackPhase = ":";
installPhase = ''
install -m 444 -D $src "$out/$extid.xpi"
'';
};
torbutton = stdenv.mkDerivation rec {
name = "torbutton-${version}";
version = "1.9.8.1";
extid = "torbutton@torproject.org";
src = fetchgit {
url = "https://git.torproject.org/torbutton.git";
rev = "refs/tags/${version}";
sha256 = "1amp0c9ky0a7fsa0bcbi6n6ginw7s2g3an4rj7kvc1lxmrcsm65l";
};
nativeBuildInputs = [ zip ];
unpackPhase = ''
cp -dR --no-preserve=mode "$src" src && cd src
'';
buildPhase = ''
$shell ./makexpi.sh
'';
installPhase = ''
install -m 444 -D pkg/torbutton-$version.xpi "$out/$extid.xpi"
'';
};
tor-launcher = stdenv.mkDerivation rec {
name = "tor-launcher-${version}";
version = "0.2.12.3";
extid = "tor-launcher@torproject.org";
src = fetchgit {
url = "https://git.torproject.org/tor-launcher.git";
rev = "refs/tags/${version}";
sha256 = "0126x48pjiy2zm4l8jzhk70w24hviaz560ffp4lb9x0ar615bc9q";
};
nativeBuildInputs = [ zip ];
unpackPhase = ''
cp -dR --no-preserve=mode "$src" src && cd src
'';
buildPhase = ''
make package
'';
installPhase = ''
install -m 444 -D pkg/tor-launcher-$version.xpi "$out/$extid.xpi"
'';
};
}

View File

@ -1,9 +1,9 @@
{ stdenv, lib, makeWrapper, fetchurl, curl, sasl, openssh, autoconf { stdenv, lib, makeWrapper, fetchurl, curl, sasl, openssh
, automake, libtool, unzip, gnutar, jdk, maven, python, wrapPython , unzip, gnutar, jdk, python, wrapPython
, setuptools, boto, pythonProtobuf, apr, subversion, gzip, systemd , setuptools, boto, pythonProtobuf, apr, subversion, gzip, systemd
, leveldb, glog, perf, utillinux, libnl, iproute, openssl, libevent , leveldb, glog, perf, utillinux, libnl, iproute, openssl, libevent
, ethtool, coreutils, which, iptables , ethtool, coreutils, which, iptables, maven
, bash , bash, autoreconfHook
}: }:
let let
@ -21,7 +21,7 @@ let
}); });
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
version = "1.1.1"; version = "1.4.0";
name = "mesos-${version}"; name = "mesos-${version}";
enableParallelBuilding = true; enableParallelBuilding = true;
@ -29,7 +29,7 @@ in stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "mirror://apache/mesos/${version}/${name}.tar.gz"; url = "mirror://apache/mesos/${version}/${name}.tar.gz";
sha256 = "0f46ebb130d2d4a9732f95d0a71d80c8c5967f3c172b110f2ece316e05922115"; sha256 = "0c08kd226nrjwm2z2drpq4vi97h9r8b1xkdvkgh1114fxg7cyvys";
}; };
patches = [ patches = [
@ -40,11 +40,13 @@ in stdenv.mkDerivation rec {
# see https://github.com/cstrahan/mesos/tree/nixos-${version} # see https://github.com/cstrahan/mesos/tree/nixos-${version}
./nixos.patch ./nixos.patch
]; ];
nativeBuildInputs = [
autoreconfHook
];
buildInputs = [ buildInputs = [
makeWrapper autoconf automake libtool curl sasl jdk maven makeWrapper curl sasl jdk
python wrapPython boto setuptools leveldb python wrapPython boto setuptools leveldb
subversion apr glog openssl libevent subversion apr glog openssl libevent maven
] ++ lib.optionals stdenv.isLinux [ ] ++ lib.optionals stdenv.isLinux [
libnl libnl
]; ];
@ -52,10 +54,6 @@ in stdenv.mkDerivation rec {
propagatedBuildInputs = [ propagatedBuildInputs = [
pythonProtobuf pythonProtobuf
]; ];
# note that we *must* statically link libprotobuf.
# if we dynamically link the lib, we get these errors:
# https://github.com/NixOS/nixpkgs/pull/19064#issuecomment-255082684
preConfigure = '' preConfigure = ''
# https://issues.apache.org/jira/browse/MESOS-6616 # https://issues.apache.org/jira/browse/MESOS-6616
configureFlagsArray+=( configureFlagsArray+=(
@ -66,13 +64,10 @@ in stdenv.mkDerivation rec {
# <sys/types.h> instead of <sys/sysmacros.h> # <sys/types.h> instead of <sys/sysmacros.h>
sed 1i'#include <sys/sysmacros.h>' -i src/linux/fs.cpp sed 1i'#include <sys/sysmacros.h>' -i src/linux/fs.cpp
sed 1i'#include <sys/sysmacros.h>' -i src/slave/containerizer/mesos/isolators/gpu/isolator.cpp sed 1i'#include <sys/sysmacros.h>' -i src/slave/containerizer/mesos/isolators/gpu/isolator.cpp
substituteInPlace 3rdparty/stout/include/stout/os/posix/chown.hpp \ substituteInPlace 3rdparty/stout/include/stout/os/posix/chown.hpp \
--subst-var-by chown ${coreutils}/bin/chown --subst-var-by chown ${coreutils}/bin/chown
substituteInPlace 3rdparty/stout/Makefile.am \ substituteInPlace 3rdparty/stout/Makefile.am \
--replace "-lprotobuf" \
"${pythonProtobuf.protobuf}/lib/libprotobuf.so"
substituteInPlace 3rdparty/stout/include/stout/os/posix/fork.hpp \ substituteInPlace 3rdparty/stout/include/stout/os/posix/fork.hpp \
--subst-var-by sh ${bash}/bin/bash --subst-var-by sh ${bash}/bin/bash
@ -99,8 +94,6 @@ in stdenv.mkDerivation rec {
--subst-var-by mesos-resolve $out/bin/mesos-resolve --subst-var-by mesos-resolve $out/bin/mesos-resolve
substituteInPlace src/python/native_common/ext_modules.py.in \ substituteInPlace src/python/native_common/ext_modules.py.in \
--replace "-lprotobuf" \
"${pythonProtobuf.protobuf}/lib/libprotobuf.so"
substituteInPlace src/slave/containerizer/mesos/isolators/gpu/volume.cpp \ substituteInPlace src/slave/containerizer/mesos/isolators/gpu/volume.cpp \
--subst-var-by cp ${coreutils}/bin/cp \ --subst-var-by cp ${coreutils}/bin/cp \
@ -124,8 +117,6 @@ in stdenv.mkDerivation rec {
substituteInPlace src/Makefile.am \ substituteInPlace src/Makefile.am \
--subst-var-by mavenRepo ${mavenRepo} \ --subst-var-by mavenRepo ${mavenRepo} \
--replace "-lprotobuf" \
"${pythonProtobuf.protobuf}/lib/libprotobuf.so"
'' + lib.optionalString stdenv.isLinux '' '' + lib.optionalString stdenv.isLinux ''
@ -179,7 +170,7 @@ in stdenv.mkDerivation rec {
"--enable-libevent" "--enable-libevent"
"--with-libevent=${libevent.dev}" "--with-libevent=${libevent.dev}"
"--with-protobuf=${pythonProtobuf.protobuf}" "--with-protobuf=${pythonProtobuf.protobuf}"
"PROTOBUF_JAR=${mavenRepo}/com/google/protobuf/protobuf-java/2.6.1/protobuf-java-2.6.1.jar" "PROTOBUF_JAR=${mavenRepo}/com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.jar"
] ++ lib.optionals stdenv.isLinux [ ] ++ lib.optionals stdenv.isLinux [
"--with-network-isolator" "--with-network-isolator"
"--with-nl=${libnl.dev}" "--with-nl=${libnl.dev}"

View File

@ -1127,10 +1127,12 @@ fetchArtifact org/vafer/jdependency/0.7/jdependency-0.7.pom
fetchArtifact org/vafer/jdependency/0.7/jdependency-0.7.pom.sha1 fetchArtifact org/vafer/jdependency/0.7/jdependency-0.7.pom.sha1
fetchArtifact org/vafer/jdependency/0.7/jdependency-0.7.jar fetchArtifact org/vafer/jdependency/0.7/jdependency-0.7.jar
fetchArtifact org/vafer/jdependency/0.7/jdependency-0.7.jar.sha1 fetchArtifact org/vafer/jdependency/0.7/jdependency-0.7.jar.sha1
fetchArtifact com/google/protobuf/protobuf-java/2.6.1/protobuf-java-2.6.1.pom fetchArtifact com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.pom
fetchArtifact com/google/protobuf/protobuf-java/2.6.1/protobuf-java-2.6.1.pom.sha1 fetchArtifact com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.pom.sha1
fetchArtifact com/google/protobuf/protobuf-java/2.6.1/protobuf-java-2.6.1.jar fetchArtifact com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.jar
fetchArtifact com/google/protobuf/protobuf-java/2.6.1/protobuf-java-2.6.1.jar.sha1 fetchArtifact com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.jar.sha1
fetchArtifact com/google/protobuf/protobuf-parent/3.3.0/protobuf-parent-3.3.0.pom
fetchArtifact com/google/protobuf/protobuf-parent/3.3.0/protobuf-parent-3.3.0.pom.sha1
fetchArtifact com/google/google/1/google-1.pom fetchArtifact com/google/google/1/google-1.pom
fetchArtifact com/google/google/1/google-1.pom.sha1 fetchArtifact com/google/google/1/google-1.pom.sha1
fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.pom fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.pom

View File

@ -6,7 +6,7 @@ stdenv.mkDerivation {
outputHashAlgo = "sha256"; outputHashAlgo = "sha256";
outputHashMode = "recursive"; outputHashMode = "recursive";
outputHash = "066ikswavq3l37x1s3pfdncyj77pvpa0kj14ax5dqb9njmsg0s11"; outputHash = "10h0qs7svw0cqjkyxs8z6s3qraa8ga920zfrr59rdlanbwg4klly";
buildInputs = [ curl ]; buildInputs = [ curl ];

View File

@ -1,20 +1,7 @@
diff --git a/3rdparty/stout/include/stout/os/posix/chown.hpp b/3rdparty/stout/include/stout/os/posix/chown.hpp diff --git i/3rdparty/stout/include/stout/os/posix/fork.hpp w/3rdparty/stout/include/stout/os/posix/fork.hpp
index c82e2e574..15d332107 100644 index a29967d..290b98b 100644
--- a/3rdparty/stout/include/stout/os/posix/chown.hpp --- i/3rdparty/stout/include/stout/os/posix/fork.hpp
+++ b/3rdparty/stout/include/stout/os/posix/chown.hpp +++ w/3rdparty/stout/include/stout/os/posix/fork.hpp
@@ -34,7 +34,7 @@ inline Try<Nothing> chown(
// TODO(bmahler): Consider walking the file tree instead. We would need
// to be careful to not miss dotfiles.
std::string command =
- "chown -R " + stringify(uid) + ':' + stringify(gid) + " '" + path + "'";
+ "@chown@ -R " + stringify(uid) + ':' + stringify(gid) + " '" + path + "'";
int status = os::system(command);
if (status != 0) {
diff --git a/3rdparty/stout/include/stout/os/posix/fork.hpp b/3rdparty/stout/include/stout/os/posix/fork.hpp
index a29967dcb..290b98b50 100644
--- a/3rdparty/stout/include/stout/os/posix/fork.hpp
+++ b/3rdparty/stout/include/stout/os/posix/fork.hpp
@@ -369,7 +369,7 @@ private: @@ -369,7 +369,7 @@ private:
if (exec.isSome()) { if (exec.isSome()) {
// Execute the command (via '/bin/sh -c command'). // Execute the command (via '/bin/sh -c command').
@ -24,11 +11,11 @@ index a29967dcb..290b98b50 100644
EXIT(EXIT_FAILURE) EXIT(EXIT_FAILURE)
<< "Failed to execute '" << command << "': " << os::strerror(errno); << "Failed to execute '" << command << "': " << os::strerror(errno);
} else if (wait.isSome()) { } else if (wait.isSome()) {
diff --git a/3rdparty/stout/include/stout/posix/os.hpp b/3rdparty/stout/include/stout/posix/os.hpp diff --git i/3rdparty/stout/include/stout/posix/os.hpp w/3rdparty/stout/include/stout/posix/os.hpp
index c37e64db6..d3d87b7f0 100644 index 8511dfd..1e7be01 100644
--- a/3rdparty/stout/include/stout/posix/os.hpp --- i/3rdparty/stout/include/stout/posix/os.hpp
+++ b/3rdparty/stout/include/stout/posix/os.hpp +++ w/3rdparty/stout/include/stout/posix/os.hpp
@@ -375,7 +375,7 @@ inline Option<std::string> getenv(const std::string& key) @@ -366,7 +366,7 @@ inline Try<std::set<pid_t>> pids(Option<pid_t> group, Option<pid_t> session)
inline Try<Nothing> tar(const std::string& path, const std::string& archive) inline Try<Nothing> tar(const std::string& path, const std::string& archive)
{ {
Try<std::string> tarOut = Try<std::string> tarOut =
@ -37,11 +24,11 @@ index c37e64db6..d3d87b7f0 100644
if (tarOut.isError()) { if (tarOut.isError()) {
return Error("Failed to archive " + path + ": " + tarOut.error()); return Error("Failed to archive " + path + ": " + tarOut.error());
diff --git a/src/Makefile.am b/src/Makefile.am diff --git i/src/Makefile.am w/src/Makefile.am
index 3bcc0f2df..e5cbc57e8 100644 index 68fff14..c572f92 100644
--- a/src/Makefile.am --- i/src/Makefile.am
+++ b/src/Makefile.am +++ w/src/Makefile.am
@@ -1545,7 +1545,7 @@ if HAS_JAVA @@ -1775,7 +1775,7 @@ if HAS_JAVA
$(MESOS_JAR): $(MESOS_JAR_SOURCE) $(MESOS_JAR_GENERATED) java/mesos.pom $(MESOS_JAR): $(MESOS_JAR_SOURCE) $(MESOS_JAR_GENERATED) java/mesos.pom
@echo "Building mesos-$(PACKAGE_VERSION).jar ..." @echo "Building mesos-$(PACKAGE_VERSION).jar ..."
@ -50,10 +37,10 @@ index 3bcc0f2df..e5cbc57e8 100644
# Convenience library for JNI bindings. # Convenience library for JNI bindings.
# TODO(Charles Reiss): We really should be building the Java library # TODO(Charles Reiss): We really should be building the Java library
diff --git a/src/cli/mesos-scp b/src/cli/mesos-scp diff --git i/src/cli/mesos-scp w/src/cli/mesos-scp
index a71ab0708..1043d1b3c 100755 index a71ab07..1043d1b 100755
--- a/src/cli/mesos-scp --- i/src/cli/mesos-scp
+++ b/src/cli/mesos-scp +++ w/src/cli/mesos-scp
@@ -19,7 +19,8 @@ if sys.version_info < (2,6,0): @@ -19,7 +19,8 @@ if sys.version_info < (2,6,0):
@ -64,11 +51,11 @@ index a71ab0708..1043d1b3c 100755
try: try:
process = subprocess.Popen( process = subprocess.Popen(
cmd, cmd,
diff --git a/src/common/command_utils.cpp b/src/common/command_utils.cpp diff --git i/src/common/command_utils.cpp w/src/common/command_utils.cpp
index 09e805140..90bf65896 100644 index c50be76..388cc53 100644
--- a/src/common/command_utils.cpp --- i/src/common/command_utils.cpp
+++ b/src/common/command_utils.cpp +++ w/src/common/command_utils.cpp
@@ -140,7 +140,7 @@ Future<Nothing> tar( @@ -142,7 +142,7 @@ Future<Nothing> tar(
argv.emplace_back(input); argv.emplace_back(input);
@ -77,7 +64,7 @@ index 09e805140..90bf65896 100644
.then([]() { return Nothing(); }); .then([]() { return Nothing(); });
} }
@@ -162,7 +162,7 @@ Future<Nothing> untar( @@ -164,7 +164,7 @@ Future<Nothing> untar(
argv.emplace_back(directory.get()); argv.emplace_back(directory.get());
} }
@ -86,7 +73,7 @@ index 09e805140..90bf65896 100644
.then([]() { return Nothing(); }); .then([]() { return Nothing(); });
} }
@@ -170,7 +170,7 @@ Future<Nothing> untar( @@ -172,7 +172,7 @@ Future<Nothing> untar(
Future<string> sha512(const Path& input) Future<string> sha512(const Path& input)
{ {
#ifdef __linux__ #ifdef __linux__
@ -95,7 +82,7 @@ index 09e805140..90bf65896 100644
vector<string> argv = { vector<string> argv = {
cmd, cmd,
input // Input file to compute shasum. input // Input file to compute shasum.
@@ -206,7 +206,7 @@ Future<Nothing> gzip(const Path& input) @@ -208,7 +208,7 @@ Future<Nothing> gzip(const Path& input)
input input
}; };
@ -104,7 +91,7 @@ index 09e805140..90bf65896 100644
.then([]() { return Nothing(); }); .then([]() { return Nothing(); });
} }
@@ -219,7 +219,7 @@ Future<Nothing> decompress(const Path& input) @@ -221,7 +221,7 @@ Future<Nothing> decompress(const Path& input)
input input
}; };
@ -113,41 +100,45 @@ index 09e805140..90bf65896 100644
.then([]() { return Nothing(); }); .then([]() { return Nothing(); });
} }
diff --git a/src/launcher/fetcher.cpp b/src/launcher/fetcher.cpp diff --git i/src/launcher/fetcher.cpp w/src/launcher/fetcher.cpp
index 4456c2813..e22c8fc03 100644 index 42980f5..3aebeed 100644
--- a/src/launcher/fetcher.cpp --- i/src/launcher/fetcher.cpp
+++ b/src/launcher/fetcher.cpp +++ w/src/launcher/fetcher.cpp
@@ -68,13 +68,13 @@ static Try<bool> extract( @@ -80,17 +80,17 @@ static Try<bool> extract(
strings::endsWith(sourcePath, ".tar.bz2") || strings::endsWith(sourcePath, ".tar.bz2") ||
strings::endsWith(sourcePath, ".txz") || strings::endsWith(sourcePath, ".txz") ||
strings::endsWith(sourcePath, ".tar.xz")) { strings::endsWith(sourcePath, ".tar.xz")) {
- command = "tar -C '" + destinationDirectory + "' -xf"; - command = {"tar", "-C", destinationDirectory, "-xf", sourcePath};
+ command = "@tar@ -C '" + destinationDirectory + "' -xf"; + command = {"@tar@", "-C", destinationDirectory, "-xf", sourcePath};
} else if (strings::endsWith(sourcePath, ".gz")) { } else if (strings::endsWith(sourcePath, ".gz")) {
string pathWithoutExtension = sourcePath.substr(0, sourcePath.length() - 3); string pathWithoutExtension = sourcePath.substr(0, sourcePath.length() - 3);
string filename = Path(pathWithoutExtension).basename(); string filename = Path(pathWithoutExtension).basename();
- command = "gzip -dc > '" + destinationDirectory + "/" + filename + "' <"; string destinationPath = path::join(destinationDirectory, filename);
+ command = "@gzip@ -dc > '" + destinationDirectory + "/" + filename + "' <";
- command = {"gunzip", "-d", "-c"};
+ command = {"@gunzip@", "-d", "-c"};
in = Subprocess::PATH(sourcePath);
out = Subprocess::PATH(destinationPath);
} else if (strings::endsWith(sourcePath, ".zip")) { } else if (strings::endsWith(sourcePath, ".zip")) {
- command = "unzip -o -d '" + destinationDirectory + "'"; - command = {"unzip", "-o", "-d", destinationDirectory, sourcePath};
+ command = "@unzip@ -o -d '" + destinationDirectory + "'"; + command = {"@unzip@", "-o", "-d", destinationDirectory, sourcePath};
} else { } else {
return false; return false;
} }
@@ -162,7 +162,7 @@ static Try<string> copyFile( @@ -193,7 +193,7 @@ static Try<string> copyFile(
const string& sourcePath, const string& sourcePath,
const string& destinationPath) const string& destinationPath)
{ {
- const string command = "cp '" + sourcePath + "' '" + destinationPath + "'"; - int status = os::spawn("cp", {"cp", sourcePath, destinationPath});
+ const string command = "@cp@ '" + sourcePath + "' '" + destinationPath + "'"; + int status = os::spawn("cp", {"@cp@", sourcePath, destinationPath});
LOG(INFO) << "Copying resource with command:" << command; if (status == -1) {
return ErrnoError("Failed to copy '" + sourcePath + "'");
diff --git a/src/linux/perf.cpp b/src/linux/perf.cpp diff --git i/src/linux/perf.cpp w/src/linux/perf.cpp
index aa31982eb..8b5331b17 100644 index b301e25..356a2cf 100644
--- a/src/linux/perf.cpp --- i/src/linux/perf.cpp
+++ b/src/linux/perf.cpp +++ w/src/linux/perf.cpp
@@ -127,7 +127,7 @@ private: @@ -128,7 +128,7 @@ private:
// NOTE: The supervisor childhook places perf in its own process group // NOTE: The supervisor childhook places perf in its own process group
// and will kill the perf process when the parent dies. // and will kill the perf process when the parent dies.
Try<Subprocess> _perf = subprocess( Try<Subprocess> _perf = subprocess(
@ -156,19 +147,10 @@ index aa31982eb..8b5331b17 100644
argv, argv,
Subprocess::PIPE(), Subprocess::PIPE(),
Subprocess::PIPE(), Subprocess::PIPE(),
@@ -319,7 +319,7 @@ bool valid(const set<string>& events) diff --git i/src/linux/systemd.cpp w/src/linux/systemd.cpp
ostringstream command; index 6318f48..394d88d 100644
--- i/src/linux/systemd.cpp
// Log everything to stderr which is then redirected to /dev/null. +++ w/src/linux/systemd.cpp
- command << "perf stat --log-fd 2";
+ command << "@perf@ stat --log-fd 2";
foreach (const string& event, events) {
command << " --event " << event;
}
diff --git a/src/linux/systemd.cpp b/src/linux/systemd.cpp
index 6318f48fc..394d88d47 100644
--- a/src/linux/systemd.cpp
+++ b/src/linux/systemd.cpp
@@ -196,13 +196,21 @@ bool exists() @@ -196,13 +196,21 @@ bool exists()
// This is static as the init system should not change while we are running. // This is static as the init system should not change while we are running.
static const bool exists = []() -> bool { static const bool exists = []() -> bool {
@ -209,10 +191,10 @@ index 6318f48fc..394d88d47 100644
Try<string> daemonReload = os::shell("systemctl daemon-reload"); Try<string> daemonReload = os::shell("systemctl daemon-reload");
if (daemonReload.isError()) { if (daemonReload.isError()) {
return Error("Failed to reload systemd daemon: " + daemonReload.error()); return Error("Failed to reload systemd daemon: " + daemonReload.error());
diff --git a/src/python/cli/src/mesos/cli.py b/src/python/cli/src/mesos/cli.py diff --git i/src/python/cli/src/mesos/cli.py w/src/python/cli/src/mesos/cli.py
index f342992e0..354abf443 100644 index 4a9b558..c08a8b9 100644
--- a/src/python/cli/src/mesos/cli.py --- i/src/python/cli/src/mesos/cli.py
+++ b/src/python/cli/src/mesos/cli.py +++ w/src/python/cli/src/mesos/cli.py
@@ -40,7 +40,7 @@ def resolve(master): @@ -40,7 +40,7 @@ def resolve(master):
import subprocess import subprocess
@ -222,10 +204,10 @@ index f342992e0..354abf443 100644
stdin=None, stdin=None,
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, stderr=subprocess.PIPE,
diff --git a/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp b/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp diff --git i/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp w/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp
index af9f3736b..f8554d414 100644 index 5b630c1..d63ad69 100644
--- a/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp --- i/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp
+++ b/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp +++ w/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp
@@ -499,7 +499,7 @@ Future<Option<ContainerLaunchInfo>> DockerVolumeIsolatorProcess::_prepare( @@ -499,7 +499,7 @@ Future<Option<ContainerLaunchInfo>> DockerVolumeIsolatorProcess::_prepare(
// unsafe arbitrary commands). // unsafe arbitrary commands).
CommandInfo* command = launchInfo.add_pre_exec_commands(); CommandInfo* command = launchInfo.add_pre_exec_commands();
@ -235,11 +217,11 @@ index af9f3736b..f8554d414 100644
command->add_arguments("mount"); command->add_arguments("mount");
command->add_arguments("-n"); command->add_arguments("-n");
command->add_arguments("--rbind"); command->add_arguments("--rbind");
diff --git a/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp b/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp diff --git i/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp w/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp
index df16b8fee..4a17475bd 100644 index d7fe9a8..1361a4e 100644
--- a/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp --- i/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp
+++ b/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp +++ w/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp
@@ -159,9 +159,9 @@ Try<Isolator*> LinuxFilesystemIsolatorProcess::create(const Flags& flags) @@ -154,9 +154,9 @@ Try<Isolator*> LinuxFilesystemIsolatorProcess::create(const Flags& flags)
// here because 'create' will only be invoked during // here because 'create' will only be invoked during
// initialization. // initialization.
Try<string> mount = os::shell( Try<string> mount = os::shell(
@ -252,7 +234,7 @@ index df16b8fee..4a17475bd 100644
workDir->c_str(), workDir->c_str(),
workDir->c_str(), workDir->c_str(),
workDir->c_str(), workDir->c_str(),
@@ -180,8 +180,8 @@ Try<Isolator*> LinuxFilesystemIsolatorProcess::create(const Flags& flags) @@ -175,8 +175,8 @@ Try<Isolator*> LinuxFilesystemIsolatorProcess::create(const Flags& flags)
LOG(INFO) << "Making '" << workDir.get() << "' a shared mount"; LOG(INFO) << "Making '" << workDir.get() << "' a shared mount";
Try<string> mount = os::shell( Try<string> mount = os::shell(
@ -263,7 +245,7 @@ index df16b8fee..4a17475bd 100644
workDir->c_str(), workDir->c_str(),
workDir->c_str()); workDir->c_str());
@@ -404,7 +404,7 @@ Try<vector<CommandInfo>> LinuxFilesystemIsolatorProcess::getPreExecCommands( @@ -422,7 +422,7 @@ Try<vector<CommandInfo>> LinuxFilesystemIsolatorProcess::getPreExecCommands(
CommandInfo command; CommandInfo command;
command.set_shell(false); command.set_shell(false);
@ -272,7 +254,7 @@ index df16b8fee..4a17475bd 100644
command.add_arguments("mount"); command.add_arguments("mount");
command.add_arguments("-n"); command.add_arguments("-n");
command.add_arguments("--rbind"); command.add_arguments("--rbind");
@@ -569,7 +569,7 @@ Try<vector<CommandInfo>> LinuxFilesystemIsolatorProcess::getPreExecCommands( @@ -610,7 +610,7 @@ Try<vector<CommandInfo>> LinuxFilesystemIsolatorProcess::getPreExecCommands(
// TODO(jieyu): Consider the mode in the volume. // TODO(jieyu): Consider the mode in the volume.
CommandInfo command; CommandInfo command;
command.set_shell(false); command.set_shell(false);
@ -281,11 +263,11 @@ index df16b8fee..4a17475bd 100644
command.add_arguments("mount"); command.add_arguments("mount");
command.add_arguments("-n"); command.add_arguments("-n");
command.add_arguments("--rbind"); command.add_arguments("--rbind");
diff --git a/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp b/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp diff --git i/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp w/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
index a1283e5ee..a918427bf 100644 index 927d95b..576dc63 100644
--- a/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp --- i/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
+++ b/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp +++ w/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
@@ -207,7 +207,7 @@ Future<Option<ContainerLaunchInfo>> SharedFilesystemIsolatorProcess::prepare( @@ -208,7 +208,7 @@ Future<Option<ContainerLaunchInfo>> SharedFilesystemIsolatorProcess::prepare(
} }
launchInfo.add_pre_exec_commands()->set_value( launchInfo.add_pre_exec_commands()->set_value(
@ -294,11 +276,11 @@ index a1283e5ee..a918427bf 100644
} }
return launchInfo; return launchInfo;
diff --git a/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp b/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp diff --git i/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp w/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp
index e3756c920..cfe458b59 100644 index 25636b5..33ec315 100644
--- a/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp --- i/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp
+++ b/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp +++ w/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp
@@ -355,7 +355,7 @@ Future<Option<ContainerLaunchInfo>> NvidiaGpuIsolatorProcess::_prepare( @@ -401,7 +401,7 @@ Future<Option<ContainerLaunchInfo>> NvidiaGpuIsolatorProcess::_prepare(
} }
launchInfo.add_pre_exec_commands()->set_value( launchInfo.add_pre_exec_commands()->set_value(
@ -307,11 +289,11 @@ index e3756c920..cfe458b59 100644
volume.HOST_PATH() + " " + target); volume.HOST_PATH() + " " + target);
} }
diff --git a/src/slave/containerizer/mesos/isolators/gpu/volume.cpp b/src/slave/containerizer/mesos/isolators/gpu/volume.cpp diff --git i/src/slave/containerizer/mesos/isolators/gpu/volume.cpp w/src/slave/containerizer/mesos/isolators/gpu/volume.cpp
index 478752f37..ab527f0cd 100644 index 536a3c7..e2819dd 100644
--- a/src/slave/containerizer/mesos/isolators/gpu/volume.cpp --- i/src/slave/containerizer/mesos/isolators/gpu/volume.cpp
+++ b/src/slave/containerizer/mesos/isolators/gpu/volume.cpp +++ w/src/slave/containerizer/mesos/isolators/gpu/volume.cpp
@@ -281,7 +281,7 @@ Try<NvidiaVolume> NvidiaVolume::create() @@ -274,7 +274,7 @@ Try<NvidiaVolume> NvidiaVolume::create()
string path = path::join(hostPath, "bin", binary); string path = path::join(hostPath, "bin", binary);
if (!os::exists(path)) { if (!os::exists(path)) {
@ -320,7 +302,7 @@ index 478752f37..ab527f0cd 100644
Try<string> which = os::shell(command); Try<string> which = os::shell(command);
if (which.isSome()) { if (which.isSome()) {
@@ -295,7 +295,7 @@ Try<NvidiaVolume> NvidiaVolume::create() @@ -288,7 +288,7 @@ Try<NvidiaVolume> NvidiaVolume::create()
: "No such file or directory")); : "No such file or directory"));
} }
@ -329,7 +311,7 @@ index 478752f37..ab527f0cd 100644
Try<string> cp = os::shell(command); Try<string> cp = os::shell(command);
if (cp.isError()) { if (cp.isError()) {
return Error("Failed to os::shell '" + command + "': " + cp.error()); return Error("Failed to os::shell '" + command + "': " + cp.error());
@@ -367,7 +367,7 @@ Try<NvidiaVolume> NvidiaVolume::create() @@ -360,7 +360,7 @@ Try<NvidiaVolume> NvidiaVolume::create()
Path(realpath.get()).basename()); Path(realpath.get()).basename());
if (!os::exists(libraryPath)) { if (!os::exists(libraryPath)) {
@ -338,11 +320,11 @@ index 478752f37..ab527f0cd 100644
Try<string> cp = os::shell(command); Try<string> cp = os::shell(command);
if (cp.isError()) { if (cp.isError()) {
return Error("Failed to os::shell '" + command + "':" return Error("Failed to os::shell '" + command + "':"
diff --git a/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp b/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp diff --git i/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp w/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
index 0d9ec57d9..a177e4476 100644 index 42bc2e1..2f9066e 100644
--- a/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp --- i/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
+++ b/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp +++ w/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
@@ -94,7 +94,7 @@ Future<Option<ContainerLaunchInfo>> NamespacesPidIsolatorProcess::prepare( @@ -131,7 +131,7 @@ Future<Option<ContainerLaunchInfo>> NamespacesPidIsolatorProcess::prepare(
// //
// TOOD(jieyu): Consider unmount the existing /proc. // TOOD(jieyu): Consider unmount the existing /proc.
launchInfo.add_pre_exec_commands()->set_value( launchInfo.add_pre_exec_commands()->set_value(
@ -351,11 +333,11 @@ index 0d9ec57d9..a177e4476 100644
return launchInfo; return launchInfo;
} }
diff --git a/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp b/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp diff --git i/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp w/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp
index c87e6715a..6601cd1b3 100644 index fc68f04..267b040 100644
--- a/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp --- i/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp
+++ b/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp +++ w/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp
@@ -262,9 +262,9 @@ Try<Isolator*> NetworkCniIsolatorProcess::create(const Flags& flags) @@ -205,9 +205,9 @@ Try<Isolator*> NetworkCniIsolatorProcess::create(const Flags& flags)
// here because 'create' will only be invoked during // here because 'create' will only be invoked during
// initialization. // initialization.
Try<string> mount = os::shell( Try<string> mount = os::shell(
@ -368,7 +350,7 @@ index c87e6715a..6601cd1b3 100644
rootDir->c_str(), rootDir->c_str(),
rootDir->c_str(), rootDir->c_str(),
rootDir->c_str(), rootDir->c_str(),
@@ -284,8 +284,8 @@ Try<Isolator*> NetworkCniIsolatorProcess::create(const Flags& flags) @@ -227,8 +227,8 @@ Try<Isolator*> NetworkCniIsolatorProcess::create(const Flags& flags)
LOG(INFO) << "Making '" << rootDir.get() << "' a shared mount"; LOG(INFO) << "Making '" << rootDir.get() << "' a shared mount";
Try<string> mount = os::shell( Try<string> mount = os::shell(
@ -379,11 +361,11 @@ index c87e6715a..6601cd1b3 100644
rootDir->c_str(), rootDir->c_str(),
rootDir->c_str()); rootDir->c_str());
diff --git a/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp b/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp diff --git i/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp w/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp
index b470f0c82..6110a43ee 100644 index 43cf3e4..94bad8b 100644
--- a/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp --- i/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp
+++ b/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp +++ w/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp
@@ -303,7 +303,7 @@ Try<Nothing> PortMapper::addPortMapping( @@ -301,7 +301,7 @@ Try<Nothing> PortMapper::addPortMapping(
# Check if the `chain` exists in the iptable. If it does not # Check if the `chain` exists in the iptable. If it does not
# exist go ahead and install the chain in the iptables NAT # exist go ahead and install the chain in the iptables NAT
# table. # table.
@ -392,7 +374,7 @@ index b470f0c82..6110a43ee 100644
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
# NOTE: When we create the chain, there is a possibility of a # NOTE: When we create the chain, there is a possibility of a
# race due to which a container launch can fail. This can # race due to which a container launch can fail. This can
@@ -317,25 +317,25 @@ Try<Nothing> PortMapper::addPortMapping( @@ -315,25 +315,25 @@ Try<Nothing> PortMapper::addPortMapping(
# since it can happen only when the chain is created the first # since it can happen only when the chain is created the first
# time and two commands for creation of the chain are executed # time and two commands for creation of the chain are executed
# simultaneously. # simultaneously.
@ -422,7 +404,7 @@ index b470f0c82..6110a43ee 100644
chain, chain,
chain, chain,
chain, chain,
@@ -362,7 +362,7 @@ Try<Nothing> PortMapper::delPortMapping() @@ -360,7 +360,7 @@ Try<Nothing> PortMapper::delPortMapping()
# The iptables command searches for the DNAT rules with tag # The iptables command searches for the DNAT rules with tag
# "container_id: <CNI_CONTAINERID>", and if it exists goes ahead # "container_id: <CNI_CONTAINERID>", and if it exists goes ahead
# and deletes it. # and deletes it.
@ -431,11 +413,11 @@ index b470f0c82..6110a43ee 100644
chain, chain,
getIptablesRuleTag()).get(); getIptablesRuleTag()).get();
diff --git a/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp b/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp diff --git i/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp w/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
index 20fb6ab35..46c160977 100644 index 57d4ccd..68c9577 100644
--- a/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp --- i/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
+++ b/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp +++ w/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
@@ -1393,19 +1393,19 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags) @@ -1394,19 +1394,19 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
// Check the availability of a few Linux commands that we will use. // Check the availability of a few Linux commands that we will use.
// We use the blocking os::shell here because 'create' will only be // We use the blocking os::shell here because 'create' will only be
// invoked during initialization. // invoked during initialization.
@ -458,7 +440,7 @@ index 20fb6ab35..46c160977 100644
if (checkCommandIp.isError()) { if (checkCommandIp.isError()) {
return Error("Check command 'ip' failed: " + checkCommandIp.error()); return Error("Check command 'ip' failed: " + checkCommandIp.error());
} }
@@ -1925,9 +1925,9 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags) @@ -1940,9 +1940,9 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
// visible. It's OK to use the blocking os::shell here because // visible. It's OK to use the blocking os::shell here because
// 'create' will only be invoked during initialization. // 'create' will only be invoked during initialization.
Try<string> mount = os::shell( Try<string> mount = os::shell(
@ -471,7 +453,7 @@ index 20fb6ab35..46c160977 100644
bindMountRoot->c_str(), bindMountRoot->c_str(),
bindMountRoot->c_str(), bindMountRoot->c_str(),
bindMountRoot->c_str(), bindMountRoot->c_str(),
@@ -1944,8 +1944,8 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags) @@ -1959,8 +1959,8 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
// shared mount yet (possibly due to slave crash while preparing // shared mount yet (possibly due to slave crash while preparing
// the work directory mount). It's safe to re-do the following. // the work directory mount). It's safe to re-do the following.
Try<string> mount = os::shell( Try<string> mount = os::shell(
@ -482,7 +464,7 @@ index 20fb6ab35..46c160977 100644
bindMountRoot->c_str(), bindMountRoot->c_str(),
bindMountRoot->c_str()); bindMountRoot->c_str());
@@ -1964,8 +1964,8 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags) @@ -1979,8 +1979,8 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
// so that they are in different peer groups. // so that they are in different peer groups.
if (entry.shared() == bindMountEntry->shared()) { if (entry.shared() == bindMountEntry->shared()) {
Try<string> mount = os::shell( Try<string> mount = os::shell(
@ -493,7 +475,7 @@ index 20fb6ab35..46c160977 100644
bindMountRoot->c_str(), bindMountRoot->c_str(),
bindMountRoot->c_str()); bindMountRoot->c_str());
@@ -3911,6 +3911,8 @@ Try<Nothing> PortMappingIsolatorProcess::removeHostIPFilters( @@ -3927,6 +3927,8 @@ Try<Nothing> PortMappingIsolatorProcess::removeHostIPFilters(
// TODO(jieyu): Use the Subcommand abstraction to remove most of the // TODO(jieyu): Use the Subcommand abstraction to remove most of the
// logic here. Completely remove this function once we can assume a // logic here. Completely remove this function once we can assume a
// newer kernel where 'setns' works for mount namespaces. // newer kernel where 'setns' works for mount namespaces.
@ -502,7 +484,7 @@ index 20fb6ab35..46c160977 100644
string PortMappingIsolatorProcess::scripts(Info* info) string PortMappingIsolatorProcess::scripts(Info* info)
{ {
ostringstream script; ostringstream script;
@@ -3921,7 +3923,7 @@ string PortMappingIsolatorProcess::scripts(Info* info) @@ -3937,7 +3939,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
// Mark the mount point PORT_MAPPING_BIND_MOUNT_ROOT() as slave // Mark the mount point PORT_MAPPING_BIND_MOUNT_ROOT() as slave
// mount so that changes in the container will not be propagated to // mount so that changes in the container will not be propagated to
// the host. // the host.
@ -511,7 +493,7 @@ index 20fb6ab35..46c160977 100644
// Disable IPv6 when IPv6 module is loaded as IPv6 packets won't be // Disable IPv6 when IPv6 module is loaded as IPv6 packets won't be
// forwarded anyway. // forwarded anyway.
@@ -3929,7 +3931,7 @@ string PortMappingIsolatorProcess::scripts(Info* info) @@ -3945,7 +3947,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
<< " echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6\n"; << " echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6\n";
// Configure lo and eth0. // Configure lo and eth0.
@ -520,7 +502,7 @@ index 20fb6ab35..46c160977 100644
<< " mtu " << hostEth0MTU << " up\n"; << " mtu " << hostEth0MTU << " up\n";
// NOTE: This is mostly a kernel issue: in veth_xmit() the kernel // NOTE: This is mostly a kernel issue: in veth_xmit() the kernel
@@ -3938,12 +3940,12 @@ string PortMappingIsolatorProcess::scripts(Info* info) @@ -3954,12 +3956,12 @@ string PortMappingIsolatorProcess::scripts(Info* info)
// when we receive a packet with a bad checksum. Disabling rx // when we receive a packet with a bad checksum. Disabling rx
// checksum offloading ensures the TCP layer will checksum and drop // checksum offloading ensures the TCP layer will checksum and drop
// it. // it.
@ -537,7 +519,7 @@ index 20fb6ab35..46c160977 100644
// Restrict the ephemeral ports that can be used by the container. // Restrict the ephemeral ports that can be used by the container.
script << "echo " << info->ephemeralPorts.lower() << " " script << "echo " << info->ephemeralPorts.lower() << " "
@@ -3972,19 +3974,19 @@ string PortMappingIsolatorProcess::scripts(Info* info) @@ -3988,19 +3990,19 @@ string PortMappingIsolatorProcess::scripts(Info* info)
} }
// Set up filters on lo and eth0. // Set up filters on lo and eth0.
@ -561,7 +543,7 @@ index 20fb6ab35..46c160977 100644
<< " protocol ip" << " protocol ip"
<< " prio " << Priority(IP_FILTER_PRIORITY, NORMAL).get() << " u32" << " prio " << Priority(IP_FILTER_PRIORITY, NORMAL).get() << " u32"
<< " flowid ffff:0" << " flowid ffff:0"
@@ -3995,7 +3997,7 @@ string PortMappingIsolatorProcess::scripts(Info* info) @@ -4011,7 +4013,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
foreach (const PortRange& range, foreach (const PortRange& range,
getPortRanges(info->nonEphemeralPorts + info->ephemeralPorts)) { getPortRanges(info->nonEphemeralPorts + info->ephemeralPorts)) {
// Local traffic inside a container will not be redirected to eth0. // Local traffic inside a container will not be redirected to eth0.
@ -570,7 +552,7 @@ index 20fb6ab35..46c160977 100644
<< " protocol ip" << " protocol ip"
<< " prio " << Priority(IP_FILTER_PRIORITY, HIGH).get() << " u32" << " prio " << Priority(IP_FILTER_PRIORITY, HIGH).get() << " u32"
<< " flowid ffff:0" << " flowid ffff:0"
@@ -4004,7 +4006,7 @@ string PortMappingIsolatorProcess::scripts(Info* info) @@ -4020,7 +4022,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
// Traffic going to host loopback IP and ports assigned to this // Traffic going to host loopback IP and ports assigned to this
// container will be redirected to lo. // container will be redirected to lo.
@ -579,7 +561,7 @@ index 20fb6ab35..46c160977 100644
<< " protocol ip" << " protocol ip"
<< " prio " << Priority(IP_FILTER_PRIORITY, NORMAL).get() << " u32" << " prio " << Priority(IP_FILTER_PRIORITY, NORMAL).get() << " u32"
<< " flowid ffff:0" << " flowid ffff:0"
@@ -4016,14 +4018,14 @@ string PortMappingIsolatorProcess::scripts(Info* info) @@ -4032,14 +4034,14 @@ string PortMappingIsolatorProcess::scripts(Info* info)
} }
// Do not forward the ICMP packet if the destination IP is self. // Do not forward the ICMP packet if the destination IP is self.
@ -596,8 +578,8 @@ index 20fb6ab35..46c160977 100644
<< " protocol ip" << " protocol ip"
<< " prio " << Priority(ICMP_FILTER_PRIORITY, NORMAL).get() << " u32" << " prio " << Priority(ICMP_FILTER_PRIORITY, NORMAL).get() << " u32"
<< " flowid ffff:0" << " flowid ffff:0"
@@ -4032,9 +4034,9 @@ string PortMappingIsolatorProcess::scripts(Info* info) @@ -4048,9 +4050,9 @@ string PortMappingIsolatorProcess::scripts(Info* info)
<< net::IPNetwork::LOOPBACK_V4().address() << "\n"; << net::IP::Network::LOOPBACK_V4().address() << "\n";
// Display the filters created on eth0 and lo. // Display the filters created on eth0 and lo.
- script << "tc filter show dev " << eth0 - script << "tc filter show dev " << eth0
@ -608,7 +590,7 @@ index 20fb6ab35..46c160977 100644
<< " parent " << ingress::HANDLE << "\n"; << " parent " << ingress::HANDLE << "\n";
// If throughput limit for container egress traffic exists, use HTB // If throughput limit for container egress traffic exists, use HTB
@@ -4046,9 +4048,9 @@ string PortMappingIsolatorProcess::scripts(Info* info) @@ -4062,9 +4064,9 @@ string PortMappingIsolatorProcess::scripts(Info* info)
// throughput. TBF requires other parameters such as 'burst' that // throughput. TBF requires other parameters such as 'burst' that
// HTB already has default values for. // HTB already has default values for.
if (egressRateLimitPerContainer.isSome()) { if (egressRateLimitPerContainer.isSome()) {
@ -620,7 +602,7 @@ index 20fb6ab35..46c160977 100644
<< CONTAINER_TX_HTB_HANDLE << " classid " << CONTAINER_TX_HTB_HANDLE << " classid "
<< CONTAINER_TX_HTB_CLASS_ID << " htb rate " << CONTAINER_TX_HTB_CLASS_ID << " htb rate "
<< egressRateLimitPerContainer.get().bytes() * 8 << "bit\n"; << egressRateLimitPerContainer.get().bytes() * 8 << "bit\n";
@@ -4059,12 +4061,12 @@ string PortMappingIsolatorProcess::scripts(Info* info) @@ -4075,12 +4077,12 @@ string PortMappingIsolatorProcess::scripts(Info* info)
// fq_codel, which has a larger buffer and better control on // fq_codel, which has a larger buffer and better control on
// buffer bloat. // buffer bloat.
// TODO(cwang): Verity that fq_codel qdisc is available. // TODO(cwang): Verity that fq_codel qdisc is available.
@ -636,24 +618,24 @@ index 20fb6ab35..46c160977 100644
} }
return script.str(); return script.str();
diff --git a/src/slave/containerizer/mesos/isolators/posix/disk.cpp b/src/slave/containerizer/mesos/isolators/posix/disk.cpp diff --git i/src/slave/containerizer/mesos/isolators/posix/disk.cpp w/src/slave/containerizer/mesos/isolators/posix/disk.cpp
index db0583386..542586370 100644 index eb23025..db268ea 100644
--- a/src/slave/containerizer/mesos/isolators/posix/disk.cpp --- i/src/slave/containerizer/mesos/isolators/posix/disk.cpp
+++ b/src/slave/containerizer/mesos/isolators/posix/disk.cpp +++ w/src/slave/containerizer/mesos/isolators/posix/disk.cpp
@@ -540,7 +540,7 @@ private: @@ -572,7 +572,7 @@ private:
// NOTE: The supervisor childhook will watch the parent process and kill // NOTE: The supervisor childhook will watch the parent process and kill
// the 'du' process in case that the parent die. // the 'du' process in case that the parent die.
Try<Subprocess> s = subprocess( Try<Subprocess> s = subprocess(
- "du", - "du",
+ "@du@", + "@du@",
command, command,
Subprocess::PATH("/dev/null"), Subprocess::PATH(os::DEV_NULL),
Subprocess::PIPE(), Subprocess::PIPE(),
diff --git a/src/slave/containerizer/mesos/isolators/volume/image.cpp b/src/slave/containerizer/mesos/isolators/volume/image.cpp diff --git i/src/slave/containerizer/mesos/isolators/volume/image.cpp w/src/slave/containerizer/mesos/isolators/volume/image.cpp
index 210e67ad0..60b3a15e4 100644 index 35966aa..b62fc86 100644
--- a/src/slave/containerizer/mesos/isolators/volume/image.cpp --- i/src/slave/containerizer/mesos/isolators/volume/image.cpp
+++ b/src/slave/containerizer/mesos/isolators/volume/image.cpp +++ w/src/slave/containerizer/mesos/isolators/volume/image.cpp
@@ -214,7 +214,7 @@ Future<Option<ContainerLaunchInfo>> VolumeImageIsolatorProcess::_prepare( @@ -231,7 +231,7 @@ Future<Option<ContainerLaunchInfo>> VolumeImageIsolatorProcess::_prepare(
CommandInfo* command = launchInfo.add_pre_exec_commands(); CommandInfo* command = launchInfo.add_pre_exec_commands();
command->set_shell(false); command->set_shell(false);
@ -662,11 +644,11 @@ index 210e67ad0..60b3a15e4 100644
command->add_arguments("mount"); command->add_arguments("mount");
command->add_arguments("-n"); command->add_arguments("-n");
command->add_arguments("--rbind"); command->add_arguments("--rbind");
diff --git a/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp b/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp diff --git i/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp w/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp
index 7b976d292..474dcd486 100644 index b321b86..8ed3e78 100644
--- a/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp --- i/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp
+++ b/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp +++ w/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp
@@ -240,7 +240,7 @@ Future<Option<ContainerLaunchInfo>> VolumeSandboxPathIsolatorProcess::prepare( @@ -265,7 +265,7 @@ Future<Option<ContainerLaunchInfo>> VolumeSandboxPathIsolatorProcess::prepare(
CommandInfo* command = launchInfo.add_pre_exec_commands(); CommandInfo* command = launchInfo.add_pre_exec_commands();
command->set_shell(false); command->set_shell(false);
@ -675,58 +657,60 @@ index 7b976d292..474dcd486 100644
command->add_arguments("mount"); command->add_arguments("mount");
command->add_arguments("-n"); command->add_arguments("-n");
command->add_arguments("--rbind"); command->add_arguments("--rbind");
diff --git a/src/slave/containerizer/mesos/provisioner/backends/copy.cpp b/src/slave/containerizer/mesos/provisioner/backends/copy.cpp diff --git i/src/slave/containerizer/mesos/provisioner/backends/copy.cpp w/src/slave/containerizer/mesos/provisioner/backends/copy.cpp
index 9c5354e5f..a73a9692e 100644 index 69faa03..01a3ed6 100644
--- a/src/slave/containerizer/mesos/provisioner/backends/copy.cpp --- i/src/slave/containerizer/mesos/provisioner/backends/copy.cpp
+++ b/src/slave/containerizer/mesos/provisioner/backends/copy.cpp +++ w/src/slave/containerizer/mesos/provisioner/backends/copy.cpp
@@ -147,7 +147,7 @@ Future<Nothing> CopyBackendProcess::_provision( @@ -266,7 +266,7 @@ Future<Nothing> CopyBackendProcess::_provision(
#endif // __APPLE__ || __FreeBSD__ #endif // __APPLE__ || __FreeBSD__
Try<Subprocess> s = subprocess( Try<Subprocess> s = subprocess(
- "cp", - "cp",
+ "@cp@", + "@cp@",
args, args,
Subprocess::PATH("/dev/null"), Subprocess::PATH(os::DEV_NULL),
Subprocess::PATH("/dev/null"), Subprocess::PATH(os::DEV_NULL),
@@ -180,7 +180,7 @@ Future<bool> CopyBackendProcess::destroy(const string& rootfs) @@ -313,7 +313,7 @@ Future<bool> CopyBackendProcess::destroy(const string& rootfs)
vector<string> argv{"rm", "-rf", rootfs}; vector<string> argv{"rm", "-rf", rootfs};
Try<Subprocess> s = subprocess( Try<Subprocess> s = subprocess(
- "rm", - "rm",
+ "@rm@", + "@rm@",
argv, argv,
Subprocess::PATH("/dev/null"), Subprocess::PATH(os::DEV_NULL),
Subprocess::FD(STDOUT_FILENO), Subprocess::FD(STDOUT_FILENO),
diff --git a/src/uri/fetchers/copy.cpp b/src/uri/fetchers/copy.cpp diff --git i/src/uri/fetchers/copy.cpp w/src/uri/fetchers/copy.cpp
index 2cfef5ab0..8a62f7699 100644 index 17f69be..831b08a 100644
--- a/src/uri/fetchers/copy.cpp --- i/src/uri/fetchers/copy.cpp
+++ b/src/uri/fetchers/copy.cpp +++ w/src/uri/fetchers/copy.cpp
@@ -97,7 +97,7 @@ Future<Nothing> CopyFetcherPlugin::fetch( @@ -97,8 +97,8 @@ Future<Nothing> CopyFetcherPlugin::fetch(
const vector<string> argv = {"cp", "-a", uri.path(), directory}; VLOG(1) << "Copying '" << uri.path() << "' to '" << directory << "'";
Try<Subprocess> s = subprocess( #ifndef __WINDOWS__
- "cp", - const char* copyCommand = "cp";
+ "@cp@", - const vector<string> argv = {"cp", "-a", uri.path(), directory};
argv, + const char* copyCommand = "@cp@";
Subprocess::PATH("/dev/null"), + const vector<string> argv = {"@cp@", "-a", uri.path(), directory};
Subprocess::PIPE(), #else // __WINDOWS__
diff --git a/src/uri/fetchers/curl.cpp b/src/uri/fetchers/curl.cpp const char* copyCommand = os::Shell::name;
index 7b746d619..12bbb04df 100644 const vector<string> argv =
--- a/src/uri/fetchers/curl.cpp diff --git i/src/uri/fetchers/curl.cpp w/src/uri/fetchers/curl.cpp
+++ b/src/uri/fetchers/curl.cpp index f34daf2..6a50341 100644
@@ -107,7 +107,7 @@ Future<Nothing> CurlFetcherPlugin::fetch( --- i/src/uri/fetchers/curl.cpp
+++ w/src/uri/fetchers/curl.cpp
@@ -109,7 +109,7 @@ Future<Nothing> CurlFetcherPlugin::fetch(
}; };
Try<Subprocess> s = subprocess( Try<Subprocess> s = subprocess(
- "curl", - "curl",
+ "@curl@", + "@curl@",
argv, argv,
Subprocess::PATH("/dev/null"), Subprocess::PATH(os::DEV_NULL),
Subprocess::PIPE(), Subprocess::PIPE(),
diff --git a/src/uri/fetchers/docker.cpp b/src/uri/fetchers/docker.cpp diff --git i/src/uri/fetchers/docker.cpp w/src/uri/fetchers/docker.cpp
index 3f38dddfb..fd991ee74 100644 index 91db13b..82a7fc4 100644
--- a/src/uri/fetchers/docker.cpp --- i/src/uri/fetchers/docker.cpp
+++ b/src/uri/fetchers/docker.cpp +++ w/src/uri/fetchers/docker.cpp
@@ -114,7 +114,7 @@ static Future<http::Response> curl( @@ -114,7 +114,7 @@ static Future<http::Response> curl(
// TODO(jieyu): Kill the process if discard is called. // TODO(jieyu): Kill the process if discard is called.
@ -734,14 +718,14 @@ index 3f38dddfb..fd991ee74 100644
- "curl", - "curl",
+ "@curl@", + "@curl@",
argv, argv,
Subprocess::PATH("/dev/null"), Subprocess::PATH(os::DEV_NULL),
Subprocess::PIPE(), Subprocess::PIPE(),
@@ -213,7 +213,7 @@ static Future<int> download( @@ -229,7 +229,7 @@ static Future<int> download(
// TODO(jieyu): Kill the process if discard is called. // TODO(jieyu): Kill the process if discard is called.
Try<Subprocess> s = subprocess( Try<Subprocess> s = subprocess(
- "curl", - "curl",
+ "@curl@", + "@curl@",
argv, argv,
Subprocess::PATH("/dev/null"), Subprocess::PATH(os::DEV_NULL),
Subprocess::PIPE(), Subprocess::PIPE(),

View File

@ -1,11 +0,0 @@
source $stdenv/setup
unpackPhase
cd freebayes-*
make
mkdir -p $out/bin
cp bin/freebayes bin/bamleftalign $out/bin
cp scripts/* $out/bin

View File

@ -1,21 +1,23 @@
{ stdenv, fetchFromGitHub, cmake, gcc, zlib}: { stdenv, fetchFromGitHub, cmake, gcc, zlib, bzip2, lzma }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "freebayes-${version}"; name = "freebayes-${version}";
version = "1.1.0"; version = "2017-08-23";
src = fetchFromGitHub { src = fetchFromGitHub {
name = "freebayes-${version}-src"; name = "freebayes-${version}-src";
owner = "ekg"; owner = "ekg";
repo = "freebayes"; repo = "freebayes";
rev = "refs/tags/v${version}"; rev = "8d2b3a060da473e1f4f89be04edfce5cba63f1d3";
sha256 = "0xb8aicb36w9mfs1gq1x7mcp3p82kl7i61d162hfncqzg2npg8rr"; sha256 = "0yyrgk2639lz1yvg4jf0ccahnkic31dy77q05pb3i28rjf37v45z";
fetchSubmodules = true; fetchSubmodules = true;
}; };
buildInputs = [ cmake gcc zlib ]; buildInputs = [ zlib bzip2 lzma ];
builder = ./builder.sh; installPhase = ''
install -vD bin/freebayes bin/bamleftalign scripts/* -t $out/bin
'';
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Bayesian haplotype-based polymorphism discovery and genotyping"; description = "Bayesian haplotype-based polymorphism discovery and genotyping";

View File

@ -5,11 +5,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "i3-${version}"; name = "i3-${version}";
version = "4.14"; version = "4.14.1";
src = fetchurl { src = fetchurl {
url = "http://i3wm.org/downloads/${name}.tar.bz2"; url = "http://i3wm.org/downloads/${name}.tar.bz2";
sha256 = "1mm5jazwv4dz3k8vl1lfrcw86agpws5k9lmav1ly51qvmzivsfmf"; sha256 = "1cazmfbbx6n8c81h6x6pdayq3mxs2ml3adz165z8vapkc72kl1nh";
}; };
nativeBuildInputs = [ which pkgconfig makeWrapper ]; nativeBuildInputs = [ which pkgconfig makeWrapper ];

View File

@ -3,12 +3,12 @@
i3.overrideDerivation (super : rec { i3.overrideDerivation (super : rec {
name = "i3-gaps-${version}"; name = "i3-gaps-${version}";
version = "4.14"; version = "4.14.1";
releaseDate = "2017-09-04"; releaseDate = "2017-09-24";
src = fetchurl { src = fetchurl {
url = "https://github.com/Airblader/i3/archive/${version}.tar.gz"; url = "https://github.com/Airblader/i3/archive/${version}.tar.gz";
sha256 = "08y2m0afcm8mbzb92qz286fd1hnqfya2pvhpxbgv83sgjcsg6hlr"; sha256 = "11fnkg4halplcnannfw3ishzwwbxbnjafmkxsim199jhlyjjd8j7";
}; };
nativeBuildInputs = super.nativeBuildInputs ++ [ autoreconfHook ]; nativeBuildInputs = super.nativeBuildInputs ++ [ autoreconfHook ];

View File

@ -1,13 +1,14 @@
{ stdenv, fetchFromGitHub, cmake, pkgconfig, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, libqtxdg, xorg }: { stdenv, fetchFromGitHub, cmake, pkgconfig, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, libqtxdg, xorg }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "screengrab-unstable-2017-02-18"; name = "screengrab-${version}";
version = "1.97";
srcs = fetchFromGitHub { srcs = fetchFromGitHub {
owner = "QtDesktop"; owner = "QtDesktop";
repo = "screengrab"; repo = "screengrab";
rev = "6fc03c70fe132b89f35d4cef2f62c9d804de3b64"; rev = version;
sha256 = "1h3rlpmaqxzysaibcw7s5msbrwaxkg6sz7a8xv6cqzjvggv09my0"; sha256 = "0qhdxnv1pz745qgvdv5x7kyfx9dz9rrq0wxyfimppzxcszv4pl2z";
}; };
nativeBuildInputs = [ cmake pkgconfig ]; nativeBuildInputs = [ cmake pkgconfig ];

View File

@ -2,9 +2,9 @@
with stdenv.lib; with stdenv.lib;
let let
date = "20170911"; date = "20170924";
rev = "870271ea071971002fa556e09e1873db316fa1a9"; rev = "1443039416dd02750765efde1af35e31c8d41be3";
sha256 = "1a9djm0p7cd5nzqdhch9y48c4wai76x6d4nwx0bj5jz46ws39bs9"; sha256 = "060l0f77hirq3i5bg294gxcszlvyn89ds2q21jwgy3ryrapfbl8i";
version = "0.9.27pre-${date}"; version = "0.9.27pre-${date}";
in in

View File

@ -1,5 +1,5 @@
{ stdenv, lib, fetchurl, file, openssl, mlton { stdenv, lib, fetchurl, file, openssl, mlton
, mysql, postgresql, sqlite , mysql, postgresql, sqlite, gcc
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@ -24,8 +24,10 @@ stdenv.mkDerivation rec {
export MSHEADER="${lib.getDev mysql.client}/include/mysql/mysql.h"; export MSHEADER="${lib.getDev mysql.client}/include/mysql/mysql.h";
export SQHEADER="${sqlite.dev}/include/sqlite3.h"; export SQHEADER="${sqlite.dev}/include/sqlite3.h";
export CC="${gcc}/bin/gcc";
export CCARGS="-I$out/include \ export CCARGS="-I$out/include \
-L${lib.getLib mysql.client}/lib/mysql \ -L${openssl.out}/lib \
-L${lib.getLib mysql.client}/lib \
-L${postgresql.lib}/lib \ -L${postgresql.lib}/lib \
-L${sqlite.out}/lib"; -L${sqlite.out}/lib";
''; '';
@ -37,7 +39,7 @@ stdenv.mkDerivation rec {
description = "Advanced purely-functional web programming language"; description = "Advanced purely-functional web programming language";
homepage = "http://www.impredicative.com/ur/"; homepage = "http://www.impredicative.com/ur/";
license = stdenv.lib.licenses.bsd3; license = stdenv.lib.licenses.bsd3;
platforms = stdenv.lib.platforms.linux; platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
maintainers = [ stdenv.lib.maintainers.thoughtpolice stdenv.lib.maintainers.sheganinans ]; maintainers = [ stdenv.lib.maintainers.thoughtpolice stdenv.lib.maintainers.sheganinans ];
}; };
} }

View File

@ -99,12 +99,12 @@ let
}; };
postgresql = { postgresql = {
configureFlags = ["--with-pgsql=${postgresql.dev}"]; configureFlags = ["--with-pgsql=${postgresql}"];
buildInputs = [ postgresql ]; buildInputs = [ postgresql ];
}; };
pdo_pgsql = { pdo_pgsql = {
configureFlags = ["--with-pdo-pgsql=${postgresql.dev}"]; configureFlags = ["--with-pdo-pgsql=${postgresql}"];
buildInputs = [ postgresql ]; buildInputs = [ postgresql ];
}; };

View File

@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
"--with-png=${libpng.dev}" # optional "--with-png=${libpng.dev}" # optional
"--with-poppler=${poppler.dev}" # optional "--with-poppler=${poppler.dev}" # optional
"--with-libz=${zlib.dev}" # optional "--with-libz=${zlib.dev}" # optional
"--with-pg=${postgresql.dev}/bin/pg_config" "--with-pg=${postgresql}/bin/pg_config"
"--with-mysql=${mysql.lib.dev}/bin/mysql_config" "--with-mysql=${mysql.lib.dev}/bin/mysql_config"
"--with-geotiff=${libgeotiff}" "--with-geotiff=${libgeotiff}"
"--with-sqlite3=${sqlite.dev}" "--with-sqlite3=${sqlite.dev}"

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, mesa, libX11 }: { stdenv, fetchurl, mesa_glu, mesa_noglu, libX11, libXext }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "glfw-2.7.9"; name = "glfw-2.7.9";
@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
sha256 = "17c2msdcb7pn3p8f83805h1c216bmdqnbn9hgzr1j8wnwjcpxx6i"; sha256 = "17c2msdcb7pn3p8f83805h1c216bmdqnbn9hgzr1j8wnwjcpxx6i";
}; };
buildInputs = [ mesa libX11 ]; buildInputs = [ mesa_glu mesa_noglu libX11 libXext ];
buildPhase = '' buildPhase = ''
make x11 make x11

View File

@ -1,5 +1,4 @@
{ stdenv, fetchFromGitHub, cmake, mesa, libXrandr, libXi, libXxf86vm, libXfixes, xlibsWrapper { stdenv, lib, fetchFromGitHub, cmake, mesa_noglu, libXrandr, libXinerama, libXcursor, libX11
, libXinerama, libXcursor
, darwin, fixDarwinDylibNames , darwin, fixDarwinDylibNames
}: }:
@ -16,12 +15,15 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true; enableParallelBuilding = true;
buildInputs = [ propagatedBuildInputs = [ mesa_noglu ];
cmake mesa libXrandr libXi libXxf86vm libXfixes xlibsWrapper
libXinerama libXcursor
] ++ stdenv.lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ Cocoa Kernel fixDarwinDylibNames ]);
cmakeFlags = "-DBUILD_SHARED_LIBS=ON"; nativeBuildInputs = [ cmake ];
buildInputs = [
libX11 libXrandr libXinerama libXcursor
] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ Cocoa Kernel fixDarwinDylibNames ]);
cmakeFlags = [ "-DBUILD_SHARED_LIBS=ON" ];
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Multi-platform library for creating OpenGL contexts and managing input, including keyboard, mouse, joystick and time"; description = "Multi-platform library for creating OpenGL contexts and managing input, including keyboard, mouse, joystick and time";

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, ncurses ? null, perl ? null }: { stdenv, fetchurl, ncurses ? null, perl ? null }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "liboping-1.9.0"; name = "liboping-1.10.0";
src = fetchurl { src = fetchurl {
url = "http://verplant.org/liboping/files/${name}.tar.bz2"; url = "http://verplant.org/liboping/files/${name}.tar.bz2";
sha256 = "0c1mdx9ixqypayhm617jjv9kr6y60nh3mnryafjzv23bnn41vfs4"; sha256 = "1n2wkmvw6n80ybdwkjq8ka43z2x8mvxq49byv61b52iyz69slf7b";
}; };
buildInputs = [ ncurses perl ]; buildInputs = [ ncurses perl ];
@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
''; '';
homepage = http://noping.cc/; homepage = http://noping.cc/;
license = licenses.lgpl21; license = licenses.lgpl21;
platforms = platforms.linux; platforms = platforms.unix;
maintainers = [ maintainers.bjornfor ]; maintainers = [ maintainers.bjornfor ];
}; };
} }

View File

@ -1,47 +0,0 @@
{stdenv, fetchurl, mesa, tcl, tk, file, libXmu, automake, autoconf, libtool, qt4,
ftgl, freetype}:
stdenv.mkDerivation rec {
name = "opencascade-6.5.5";
src = fetchurl {
url = http://files.opencascade.com/OCCT/OCC_6.5.5_release/OpenCASCADE655.tgz;
sha256 = "1dnik00adfh6dxvn9kgf35yjda8chbi05f71i9119idmmrcapipm";
};
buildInputs = [ mesa tcl tk file libXmu automake autoconf libtool qt4 ftgl freetype ];
preUnpack = ''
sourceRoot=`pwd`/ros
'';
preConfigure = ''
sh ./build_configure
'';
# -fpermissive helps building opencascade, although gcc detects a flaw in the code
# and reports an error otherwise. Further versions may fix that.
NIX_CFLAGS_COMPILE = "-fpermissive"
# https://bugzilla.redhat.com/show_bug.cgi?id=902561
+ " -DUSE_INTERP_RESULT"
# https://bugs.freedesktop.org/show_bug.cgi?id=83631
+ " -DGLX_GLXEXT_LEGACY";
hardeningDisable = [ "format" ];
configureFlags = [ "--with-tcl=${tcl}/lib" "--with-tk=${tk}/lib" "--with-qt=${qt4}" "--with-ftgl=${ftgl}" "--with-freetype=${freetype.dev}" ];
postInstall = ''
mv $out/inc $out/include
mkdir -p $out/share/doc/${name}
cp -R ../doc $out/share/doc/${name}
'';
enableParallelBuilding = true;
meta = {
description = "Open CASCADE Technology, libraries for 3D modeling and numerical simulation";
homepage = http://www.opencascade.org/;
maintainers = with stdenv.lib.maintainers; [viric];
platforms = with stdenv.lib.platforms; linux;
};
}

View File

@ -1,39 +1,22 @@
{stdenv, fetchurl, mesa, tcl, tk, file, libXmu, cmake, qt4, freetype}: {stdenv, fetchurl, mesa, tcl, tk, file, libXmu, cmake, libtool, qt4,
ftgl, freetype}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "opencascade-6.6.0"; name = "opencascade-oce-0.17.2";
src = fetchurl { src = fetchurl {
url = http://files.opencascade.com/OCCT/OCC_6.6.0_release/OpenCASCADE660.tgz; url = https://github.com/tpaviot/oce/archive/OCE-0.17.2.tar.gz;
sha256 = "0q2xn915w9skv9sj74lxnyv9g3b0yi1j04majyzxk6sv4nra97z3"; sha256 = "0vpmnb0k5y2f7lpmwx9pg9yfq24zjvnsak5alzacncfm1hv9b6cd";
}; };
buildInputs = [ cmake mesa tcl tk file libXmu qt4 freetype ]; buildInputs = [ mesa tcl tk file libXmu libtool qt4 ftgl freetype cmake ];
sourceRoot = "ros/adm/cmake"; preConfigure = ''
cmakeFlags="$cmakeFlags -DOCE_INSTALL_PREFIX=$out"
cmakeFlags = [ '';
"-D3RDPARTY_TCL_DIR=${tcl}"
"-D3RDPARTY_FREETYPE_DIR=${freetype.dev}"
# Not used on Linux but must be defined during configuration.
"-D3RDPARTY_FREETYPE_DLL=${freetype.dev}"
];
# https://bugs.freedesktop.org/show_bug.cgi?id=83631 # https://bugs.freedesktop.org/show_bug.cgi?id=83631
NIX_CFLAGS_COMPILE = "-DGLX_GLXEXT_LEGACY"; NIX_CFLAGS_COMPILE = "-DGLX_GLXEXT_LEGACY";
hardeningDisable = [ "format" ];
preConfigure = ''
cmakeFlags="$cmakeFlags -DINSTALL_DIR=$out"
'';
postInstall = ''
mv $out/inc $out/include
mkdir -p $out/share/doc/${name}
cp -R ../../../doc $out/share/doc/${name}
'';
enableParallelBuilding = true; enableParallelBuilding = true;
meta = { meta = {

View File

@ -1,28 +0,0 @@
{stdenv, fetchurl, mesa, tcl, tk, file, libXmu, cmake, libtool, qt4,
ftgl, freetype}:
stdenv.mkDerivation rec {
name = "opencascade-oce-0.17.2";
src = fetchurl {
url = https://github.com/tpaviot/oce/archive/OCE-0.17.2.tar.gz;
sha256 = "0vpmnb0k5y2f7lpmwx9pg9yfq24zjvnsak5alzacncfm1hv9b6cd";
};
buildInputs = [ mesa tcl tk file libXmu libtool qt4 ftgl freetype cmake ];
preConfigure = ''
cmakeFlags="$cmakeFlags -DOCE_INSTALL_PREFIX=$out"
'';
# https://bugs.freedesktop.org/show_bug.cgi?id=83631
NIX_CFLAGS_COMPILE = "-DGLX_GLXEXT_LEGACY";
enableParallelBuilding = true;
meta = {
description = "Open CASCADE Technology, libraries for 3D modeling and numerical simulation";
homepage = http://www.opencascade.org/;
maintainers = with stdenv.lib.maintainers; [viric];
platforms = with stdenv.lib.platforms; linux;
};
}

View File

@ -0,0 +1,24 @@
{ lib
, buildPythonPackage
, fetchPypi
}:
buildPythonPackage rec {
pname = "pyblake2";
version = "0.9.3";
name = "${pname}-${version}";
src = fetchPypi {
inherit pname version;
sha256 = "626448e1fe1cc01d2197118954bec9f158378577e12686d5b01979f7f0fa2212";
};
# requires setting up sphinx doctest
doCheck = false;
meta = {
description = "BLAKE2 hash function extension module";
license = lib.licenses.publicDomain;
homepage = https://github.com/dchest/pyblake2;
};
}

View File

@ -0,0 +1,32 @@
{ lib
, buildPythonPackage
, fetchPypi
, requests
, betamax
, mock
, pytest
}:
buildPythonPackage rec {
pname = "requests-toolbelt";
version = "0.8.0";
name = "${pname}-${version}";
src = fetchPypi {
inherit pname version;
sha256 = "f6a531936c6fa4c6cfce1b9c10d5c4f498d16528d2a54a22ca00011205a187b5";
};
checkInputs = [ betamax mock pytest ];
propagatedBuildInputs = [ requests ];
checkPhase = ''
py.test tests
'';
meta = {
description = "A toolbelt of useful classes and functions to be used with python-requests";
homepage = http://toolbelt.rtfd.org;
maintainers = with lib.maintainers; [ matthiasbeyer jgeerds ];
};
}

View File

@ -0,0 +1,32 @@
{ lib
, buildPythonPackage
, fetchPypi
, pkginfo
, requests
, requests_toolbelt
, tqdm
, pyblake2
}:
buildPythonPackage rec {
pname = "twine";
version = "1.9.1";
name = "${pname}-${version}";
src = fetchPypi {
inherit pname version;
sha256 = "caa45b7987fc96321258cd7668e3be2ff34064f5c66d2d975b641adca659c1ab";
};
propagatedBuildInputs = [ pkginfo requests requests_toolbelt tqdm pyblake2 ];
# Requires network
doCheck = false;
meta = {
description = "Collection of utilities for interacting with PyPI";
homepage = https://github.com/pypa/twine;
license = lib.licenses.asl20;
maintainer = with lib.maintainers; [ fridh ];
};
}

View File

@ -183,7 +183,7 @@ in
pg = attrs: { pg = attrs: {
buildFlags = [ buildFlags = [
"--with-pg-config=${postgresql.dev}/bin/pg_config" "--with-pg-config=${postgresql}/bin/pg_config"
]; ];
}; };

View File

@ -1,26 +1,26 @@
{stdenv, fetchurl, nasm, SDL, zlib, libpng, ncurses, mesa, intltool, gtk2, pkgconfig, libxml2, xlibsWrapper, libpulseaudio}: { stdenv, fetchFromGitHub, autoreconfHook, intltool, pkgconfig
, SDL, zlib, gtk2, libxml2, libXv }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "snes9x-gtk-${version}"; name = "snes9x-gtk-${version}";
version = "1.53"; version = "1.54.1";
src = fetchurl { src = fetchFromGitHub {
url = "http://files.ipherswipsite.com/snes9x/snes9x-${version}-src.tar.bz2"; owner = "snes9xgit";
sha256 = "9f7c5d2d0fa3fe753611cf94e8879b73b8bb3c0eab97cdbcb6ab7376efa78dc3"; repo = "snes9x";
rev = version;
sha256 = "10fqm7lk36zj2gnx0ypps0nlws923f60b0zj4pmq9apawgx8k6rw";
}; };
buildInputs = [ nasm SDL zlib libpng ncurses mesa intltool gtk2 pkgconfig libxml2 xlibsWrapper libpulseaudio]; nativeBuildInputs = [ autoreconfHook intltool pkgconfig ];
sourceRoot = "snes9x-${version}-src/gtk"; sourceRoot = "snes9x-${version}-src";
preAutoreconf = "cd gtk; intltoolize";
buildInputs = [ SDL zlib gtk2 libxml2 libXv ];
installPhase = "install -Dt $out/bin snes9x-gtk";
configureFlags = "--prefix=$out/ --with-opengl"; meta = with stdenv.lib; {
installPhase = ''
mkdir -p $out/bin
cp snes9x-gtk $out/bin
'';
meta = {
description = "A portable, freeware Super Nintendo Entertainment System (SNES) emulator"; description = "A portable, freeware Super Nintendo Entertainment System (SNES) emulator";
longDescription = '' longDescription = ''
Snes9x is a portable, freeware Super Nintendo Entertainment System (SNES) Snes9x is a portable, freeware Super Nintendo Entertainment System (SNES)
@ -28,9 +28,9 @@ stdenv.mkDerivation rec {
and Super Famicom Nintendo game systems on your PC or Workstation; which and Super Famicom Nintendo game systems on your PC or Workstation; which
includes some real gems that were only ever released in Japan. includes some real gems that were only ever released in Japan.
''; '';
license = stdenv.lib.licenses.lgpl2; license = licenses.lgpl2;
maintainers = [ stdenv.lib.maintainers.qknight ]; maintainers = with maintainers; [ qknight ];
homepage = http://www.snes9x.com/; homepage = http://www.snes9x.com/;
platforms = stdenv.lib.platforms.linux; platforms = platforms.linux;
}; };
} }

View File

@ -1,5 +1,5 @@
{ stdenv, fetchurl, pkgconfig, dbus, glib, alsaLib, { stdenv, fetchurl, pkgconfig, dbus, glib, alsaLib,
pythonPackages, readline, libsndfile, udev, libical, pythonPackages, readline, udev, libical,
systemd, enableWiimote ? false }: systemd, enableWiimote ? false }:
assert stdenv.isLinux; assert stdenv.isLinux;
@ -15,13 +15,10 @@ stdenv.mkDerivation rec {
pythonPath = with pythonPackages; pythonPath = with pythonPackages;
[ dbus pygobject2 pygobject3 recursivePthLoader ]; [ dbus pygobject2 pygobject3 recursivePthLoader ];
buildInputs = buildInputs = [
[ pkgconfig dbus glib alsaLib pythonPackages.python pythonPackages.wrapPython pkgconfig dbus glib alsaLib pythonPackages.python pythonPackages.wrapPython
readline libsndfile udev libical readline udev libical
# Disables GStreamer; not clear what it gains us other than a ];
# zillion extra dependencies.
# gstreamer gst-plugins-base
];
outputs = [ "out" "dev" "test" ]; outputs = [ "out" "dev" "test" ];
@ -51,10 +48,8 @@ stdenv.mkDerivation rec {
makeFlags = "rulesdir=$(out)/lib/udev/rules.d"; makeFlags = "rulesdir=$(out)/lib/udev/rules.d";
# FIXME: Move these into a separate package to prevent Bluez from
# depending on Python etc.
postInstall = '' postInstall = ''
mkdir -p $test/test mkdir -p $test/{bin,test}
cp -a test $test cp -a test $test
pushd $test/test pushd $test/test
for a in \ for a in \
@ -65,7 +60,7 @@ stdenv.mkDerivation rec {
list-devices \ list-devices \
monitor-bluetooth \ monitor-bluetooth \
; do ; do
ln -s ../test/$a $out/bin/bluez-$a ln -s ../test/$a $test/bin/bluez-$a
done done
popd popd
wrapPythonProgramsIn $test/test "$test/test $pythonPath" wrapPythonProgramsIn $test/test "$test/test $pythonPath"

View File

@ -6,11 +6,11 @@ in
{ {
# Policy: use the highest stable version as the default (on our master). # Policy: use the highest stable version as the default (on our master).
stable = generic { stable = generic {
version = "384.69"; version = "384.90";
sha256_32bit = "1zgq9vji0ndadvql3bsnd0a6p7pq0vr8d0yb5c8b22i2h9smhw1v"; sha256_32bit = "0mq0h7g56m9zvr42ipy2664ph922754l0pdp8wpsmzfpkzg6g9lp";
sha256_64bit = "0l3np6cx2rnb2q89zbnq4lvfcjl2g7i56hxwcb11ggijqm7ridx7"; sha256_64bit = "1ggylpzw1j217w64rspw4fhvq25wz0la0hhy0b1kxjpwy8h6ipqd";
settingsSha256 = "064va75p7dnkhy4hyi9b1gl4wjmrpjksg4cyiwl6n3lkmjnvmnwy"; settingsSha256 = "023jfbsxsbkjk78i9i6wd0sybv5hib2d7mfvy635w3anjcrsk5il";
persistencedSha256 = "0ijq25gnihw34qhkba62l5fy6lwkma94i0fxp8084byyilm3fwms"; persistencedSha256 = "166ya8pnv4frvrsp0x5zkg8li85vipags03wy6dlf8s940al92z2";
}; };
beta = generic { beta = generic {

View File

@ -2,7 +2,7 @@
buildGoPackage rec { buildGoPackage rec {
name = "dgraph-${version}"; name = "dgraph-${version}";
version = "0.8.1"; version = "0.8.2";
goPackagePath = "github.com/dgraph-io/dgraph"; goPackagePath = "github.com/dgraph-io/dgraph";
@ -10,13 +10,13 @@ buildGoPackage rec {
owner = "dgraph-io"; owner = "dgraph-io";
repo = "dgraph"; repo = "dgraph";
rev = "v${version}"; rev = "v${version}";
sha256 = "1gls2pvgcmd364x84gz5fafs7pwkll4k352rg1lmv70wvzyydsdr"; sha256 = "0zc5bda8m2srjbk0gy1nnm0bya8if0kmk1szqr1qv3xifdzmi4nf";
}; };
extraOutputsToInstall = [ "dashboard" ]; extraOutputsToInstall = [ "dashboard" ];
goDeps = ./deps.nix; goDeps = ./deps.nix;
subPackages = [ "cmd/dgraph" "cmd/dgraphloader" ]; subPackages = [ "cmd/dgraph" "cmd/dgraphloader" "cmd/bulkloader"];
# let's move the dashboard to a different output, to prevent $bin from # let's move the dashboard to a different output, to prevent $bin from
# depending on $out # depending on $out
@ -36,6 +36,7 @@ buildGoPackage rec {
# Removing it fixes cycle between $out and $bin # Removing it fixes cycle between $out and $bin
install_name_tool -delete_rpath $out/lib $bin/bin/dgraph install_name_tool -delete_rpath $out/lib $bin/bin/dgraph
install_name_tool -delete_rpath $out/lib $bin/bin/dgraphloader install_name_tool -delete_rpath $out/lib $bin/bin/dgraphloader
install_name_tool -delete_rpath $out/lib $bin/bin/bulkloader
''; '';
meta = { meta = {

View File

@ -94,8 +94,8 @@
fetch = { fetch = {
type = "git"; type = "git";
url = "https://github.com/coreos/etcd"; url = "https://github.com/coreos/etcd";
rev = "1ebeef5cbfe69c0dab2bc701ee5307eed7a7d8d2"; rev = "9d43462d174c664f5edf313dec0de31e1ef4ed47";
sha256 = "12lidn1a8nwsk6nlwyfirrxkxhs4lhj53f4cd19xm8w070q0mg19"; sha256 = "0qxqjxhhciaacag1jz2rlncmlgw861ig2yx993ylvfm30jvyj2cj";
}; };
} }
{ {
@ -112,8 +112,8 @@
fetch = { fetch = {
type = "git"; type = "git";
url = "https://github.com/dgraph-io/badger"; url = "https://github.com/dgraph-io/badger";
rev = "ad23a425b3c87b8223780cb882bed568ca14b9f0"; rev = "64df7f57d9ee20d7b28de4a3eea90bf8d7310a77";
sha256 = "1xjd05vska1kanmgdhp5cvkn2i6236rqphrc9i4kfjndgwkmas57"; sha256 = "1ikgzn2l62kb238n0wm6s95py5ypv71p09w7zyvzkjf34x675mzz";
}; };
} }
{ {
@ -139,8 +139,8 @@
fetch = { fetch = {
type = "git"; type = "git";
url = "https://github.com/golang/geo"; url = "https://github.com/golang/geo";
rev = "3a42ea109208469f16baf9e090135dd0e82ece5c"; rev = "31fb0106dc4a947e5aaee1fe186e56447f839510";
sha256 = "1fzlakjj94gv516q7gd9qycn91lij7wmjbdv0vsrh6qnxvgqr8hw"; sha256 = "00w4kwm98hrgr3ggfdk1h7qa5gp00z4s0j0iwgwd9rgadb59kb2c";
}; };
} }
{ {
@ -292,8 +292,8 @@
fetch = { fetch = {
type = "git"; type = "git";
url = "https://go.googlesource.com/text"; url = "https://go.googlesource.com/text";
rev = "836efe42bb4aa16aaa17b9c155d8813d336ed720"; rev = "1cbadb444a806fd9430d14ad08967ed91da4fa0a";
sha256 = "11s7bjk0karl1lx8v4n6dvdnsh702x4f2qlmnqac2qdz8hdswmi1"; sha256 = "0ih9ysagh4ylj08393497sscf3yziybc6acg4mrh0wa7mld75j56";
}; };
} }
{ {
@ -301,8 +301,8 @@
fetch = { fetch = {
type = "git"; type = "git";
url = "https://github.com/google/go-genproto"; url = "https://github.com/google/go-genproto";
rev = "b0a3dcfcd1a9bd48e63634bd8802960804cf8315"; rev = "1e559d0a00eef8a9a43151db4665280bd8dd5886";
sha256 = "0lkj73lyr4dzj2pxgmild0i1bl6kdgrxa3c8m44j5ms537pyxcpr"; sha256 = "1dfm8zd9mif1aswks79wgyi7n818s5brbdnnrrlg79whfhaf20hd";
}; };
} }
{ {
@ -310,8 +310,8 @@
fetch = { fetch = {
type = "git"; type = "git";
url = "https://github.com/grpc/grpc-go"; url = "https://github.com/grpc/grpc-go";
rev = "2bb318258959db281674bc6fd67b5167b7ff0d65"; rev = "f92cdcd7dcdc69e81b2d7b338479a19a8723cfa3";
sha256 = "1g8ir87ksr8549801vdgb0n6rmxws05ky50bkgjv86370h146cqm"; sha256 = "1li8rn2s4f8qc77npamlm2ijin44scb8vvd8c4cr0l7za2m89jfn";
}; };
} }
{ {

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, elk5Version, makeWrapper, jre, utillinux, getopt }: { stdenv, fetchurl, elk5Version, makeWrapper, jre_headless, utillinux, getopt }:
with stdenv.lib; with stdenv.lib;
@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
patches = [ ./es-home-5.x.patch ./es-classpath-5.x.patch ]; patches = [ ./es-home-5.x.patch ./es-classpath-5.x.patch ];
buildInputs = [ makeWrapper jre ] ++ buildInputs = [ makeWrapper jre_headless ] ++
(if (!stdenv.isDarwin) then [utillinux] else [getopt]); (if (!stdenv.isDarwin) then [utillinux] else [getopt]);
installPhase = '' installPhase = ''
@ -27,10 +27,10 @@ stdenv.mkDerivation rec {
${if (!stdenv.isDarwin) ${if (!stdenv.isDarwin)
then ''--prefix PATH : "${utillinux}/bin/"'' then ''--prefix PATH : "${utillinux}/bin/"''
else ''--prefix PATH : "${getopt}/bin"''} \ else ''--prefix PATH : "${getopt}/bin"''} \
--set JAVA_HOME "${jre}" \ --set JAVA_HOME "${jre_headless}" \
--set ES_JVM_OPTIONS "$out/config/jvm.options" --set ES_JVM_OPTIONS "$out/config/jvm.options"
wrapProgram $out/bin/elasticsearch-plugin --set JAVA_HOME "${jre}" wrapProgram $out/bin/elasticsearch-plugin --set JAVA_HOME "${jre_headless}"
''; '';
meta = { meta = {

View File

@ -11,7 +11,7 @@ let
inherit sha256; inherit sha256;
}; };
outputs = [ "out" "dev" "lib" "doc" "man" ]; outputs = [ "out" "lib" "doc" "man" ];
setOutputFlags = false; # $out retains configureFlags :-/ setOutputFlags = false; # $out retains configureFlags :-/
buildInputs = buildInputs =
@ -46,16 +46,18 @@ let
let path = if atLeast "9.6" then "src/common/config_info.c" else "src/bin/pg_config/pg_config.c"; in let path = if atLeast "9.6" then "src/common/config_info.c" else "src/bin/pg_config/pg_config.c"; in
'' ''
# Hardcode the path to pgxs so pg_config returns the path in $out # Hardcode the path to pgxs so pg_config returns the path in $out
substituteInPlace "${path}" --replace HARDCODED_PGXS_PATH $dev/lib substituteInPlace "${path}" --replace HARDCODED_PGXS_PATH $out/lib
''; '';
postInstall = postInstall =
'' ''
moveToOutput "bin/pg_config" "$dev" moveToOutput "lib/pgxs" "$out" # looks strange, but not deleting it
moveToOutput "lib/pgxs" "$dev" # looks strange, but not deleting it
moveToOutput "lib/*.a" "$out" moveToOutput "lib/*.a" "$out"
moveToOutput "lib/libecpg*" "$out" moveToOutput "lib/libecpg*" "$out"
# Prevent a retained dependency on gcc-wrapper.
substituteInPlace "$out/lib/pgxs/src/Makefile.global" --replace ${stdenv.cc}/bin/ld ld
# Remove static libraries in case dynamic are available. # Remove static libraries in case dynamic are available.
for i in $out/lib/*.a; do for i in $out/lib/*.a; do
name="$(basename "$i")" name="$(basename "$i")"

View File

@ -1,8 +1,8 @@
{ stdenv, fetchFromGitHub, boost, sqlite }: { stdenv, fetchFromGitHub, boost, sqlite, cmake, gtest }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "udpt-${version}"; name = "udpt-${version}";
version = "2016-02-20"; # v2.0-rc0 with sample config version = "2017-09-27";
enableParallelBuilding = true; enableParallelBuilding = true;
@ -12,11 +12,21 @@ stdenv.mkDerivation rec {
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "naim94a"; owner = "naim94a";
repo = "udpt"; repo = "udpt";
rev = "0790558de8b5bb841bb10a9115bbf72c3b4711b5"; rev = "e0dffc83c8ce76b08a41a4abbd5f8065535d534f";
sha256 = "0rgkjwvnqwbnqy7pm3dk176d3plb5lypaf12533yr0yfzcp6gnzk"; sha256 = "187dw96mzgcmh4k9pvfpb7ckbb8d4vlikamr2x8vkpwzgjs3xd6g";
}; };
buildInputs = [ boost sqlite ]; doCheck = true;
checkPhase = ''
runHook preCheck
make test
runHook postCheck
'';
buildInputs = [ boost sqlite cmake gtest ];
postPatch = '' postPatch = ''
# Enabling optimization (implied by fortify hardening) causes htons # Enabling optimization (implied by fortify hardening) causes htons
@ -27,7 +37,7 @@ stdenv.mkDerivation rec {
installPhase = '' installPhase = ''
mkdir -p $out/bin $out/etc/ mkdir -p $out/bin $out/etc/
cp udpt $out/bin cp udpt $out/bin
cp udpt.conf $out/etc/ cp ../udpt.conf $out/etc/
# without this, the resulting binary is unstripped. # without this, the resulting binary is unstripped.
runHook postInstall runHook postInstall
''; '';

View File

@ -0,0 +1,54 @@
{ stdenv, fetchbzr, x11 }:
let
version = "4";
in
stdenv.mkDerivation {
name = "xwinwrap-${version}";
src = fetchbzr {
url = https://code.launchpad.net/~shantanu-goel/xwinwrap/devel;
rev = version;
sha256 = "1annhqc71jcgx5zvcy31c1c488ygx4q1ygrwyy2y0ww743smbchw";
};
buildInputs = [
x11
];
buildPhase = if stdenv.system == "x86_64-linux" then ''
make all64
'' else if stdenv.system == "i686-linux" then ''
make all32
'' else throw "xwinwrap is not supported on ${stdenv.system}";
installPhase = ''
mkdir -p $out/bin
mv */xwinwrap $out/bin
'';
meta = with stdenv.lib; {
description = "A utility that allows you to use an animated X window as the wallpaper";
longDescription = ''
XWinWrap is a small utility written a loooong time ago that allowed you to
stick most of the apps to your desktop background. What this meant was you
could use an animated screensaver (like glmatrix, electric sheep, etc) or
even a movie, and use it as your wallpaper. But only one version of this
app was ever released, and it had a few problems, like:
- Well, sticking didnt work. So if you did a minimize all or go to
desktop kind of thing, your wallpaper got minimized as well.
- The geometry option didnt work, so you could not create, e.g., a small
matrix window surrounded by your original wallpaper.
Seeing no-one picking it up, I decided to give it a bit of polish last
weekend by fixing the above problems and also add a few features. And here
it is, in its new avatar Shantz XWinWrap.
'';
license = licenses.hpnd;
homepage = https://shantanugoel.com/2008/09/03/shantz-xwinwrap/;
maintainers = with maintainers; [ infinisil ];
platforms = platforms.linux;
};
}

View File

@ -12,9 +12,9 @@ stdenv.mkDerivation rec {
# acl relies on attr, which I can't get to build on darwin # acl relies on attr, which I can't get to build on darwin
++ stdenv.lib.optional (!stdenv.isDarwin) acl; ++ stdenv.lib.optional (!stdenv.isDarwin) acl;
configureFlags = [ configureFlags = [
"--with-sqlite3=${sqlite.dev}" "--with-sqlite3=${sqlite.dev}"
"--with-postgresql=${postgresql.dev}" "--with-postgresql=${postgresql}"
]; ];
postInstall = '' postInstall = ''

View File

@ -1,5 +1,7 @@
{ stdenv { stdenv
, fetchurl , fetchurl
, gcc
, removeReferencesTo
, cpp ? false , cpp ? false
, gfortran ? null , gfortran ? null
, zlib ? null , zlib ? null
@ -30,6 +32,8 @@ stdenv.mkDerivation rec {
inherit mpi; inherit mpi;
}; };
nativeBuildInputs = [ removeReferencesTo ];
buildInputs = [] buildInputs = []
++ optional (gfortran != null) gfortran ++ optional (gfortran != null) gfortran
++ optional (szip != null) szip; ++ optional (szip != null) szip;
@ -47,6 +51,10 @@ stdenv.mkDerivation rec {
patches = [./bin-mv.patch]; patches = [./bin-mv.patch];
postInstall = ''
find "$out" -type f -exec remove-references-to -t ${stdenv.cc} '{}' +
'';
meta = { meta = {
description = "Data model, library, and file format for storing and managing data"; description = "Data model, library, and file format for storing and managing data";
longDescription = '' longDescription = ''

View File

@ -1,8 +1,8 @@
{ stdenv, fetchgit, perl, cdrkit, syslinux, xz, openssl }: { stdenv, fetchgit, perl, cdrkit, syslinux, xz, openssl }:
let let
date = "20160831"; date = "20170922";
rev = "827dd1bfee67daa683935ce65316f7e0f057fe1c"; rev = "74d90b33f8490adcee2026ece18d8411d93b6a39";
in in
stdenv.mkDerivation { stdenv.mkDerivation {
@ -12,7 +12,7 @@ stdenv.mkDerivation {
src = fetchgit { src = fetchgit {
url = git://git.ipxe.org/ipxe.git; url = git://git.ipxe.org/ipxe.git;
sha256 = "11w8b0vln3skfn8r1cvzngslz12njdkwmnacyq3qffb96k2dn2ww"; sha256 = "12ijrq451fj2x3i7c7xjlxig5mwbhmgzqjvmfl2sza953vfbk4vw";
inherit rev; inherit rev;
}; };
@ -40,6 +40,10 @@ stdenv.mkDerivation {
installPhase = '' installPhase = ''
mkdir -p $out mkdir -p $out
cp bin/ipxe.dsk bin/ipxe.usb bin/ipxe.iso bin/ipxe.lkrn bin/undionly.kpxe $out cp bin/ipxe.dsk bin/ipxe.usb bin/ipxe.iso bin/ipxe.lkrn bin/undionly.kpxe $out
# Some PXE constellations especially with dnsmasq are looking for the file with .0 ending
# let's provide it as a symlink to be compatible in this case.
ln -s undionly.kpxe $out/undionly.kpxe.0
''; '';
meta = with stdenv.lib; meta = with stdenv.lib;

View File

@ -15,11 +15,11 @@ with stdenv.lib;
buildPythonApplication rec { buildPythonApplication rec {
name = "youtube-dl-${version}"; name = "youtube-dl-${version}";
version = "2017.09.15"; version = "2017.09.24";
src = fetchurl { src = fetchurl {
url = "https://yt-dl.org/downloads/${version}/${name}.tar.gz"; url = "https://yt-dl.org/downloads/${version}/${name}.tar.gz";
sha256 = "1kw8pqzvhbpyxcz2jb692j4cgzd3vmd81mra09xvpzkq974jkx7f"; sha256 = "0j2m75j0d1n83i7jzpkcj7ir0bkskj024j9b0yi88zipcg740wbx";
}; };
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];

View File

@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
configureFlags = [ configureFlags = [
"--localstatedir=/var" "--localstatedir=/var"
"--with-botan-config=${botan}/bin/botan-config-1.10" "--with-botan-config=${botan}/bin/botan-config-1.10"
"--with-dhcp-pgsql=${postgresql.dev}/bin/pg_config" "--with-dhcp-pgsql=${postgresql}/bin/pg_config"
"--with-dhcp-mysql=${mysql.client.dev}/bin/mysql_config" "--with-dhcp-mysql=${mysql.client.dev}/bin/mysql_config"
]; ];

View File

@ -1,8 +1,8 @@
{ stdenv, fetchurl, gnutls, pkgconfig, readline, zlib, libidn2, gmp, libiconv, gettext }: { stdenv, fetchurl, gnutls, pkgconfig, readline, zlib, libidn2, gmp, libiconv, libunistring, gettext }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "lftp-${version}"; name = "lftp-${version}";
version = "4.8.0"; version = "4.8.2";
src = fetchurl { src = fetchurl {
urls = [ urls = [
@ -10,12 +10,12 @@ stdenv.mkDerivation rec {
"ftp://ftp.st.ryukoku.ac.jp/pub/network/ftp/lftp/${name}.tar.bz2" "ftp://ftp.st.ryukoku.ac.jp/pub/network/ftp/lftp/${name}.tar.bz2"
"http://lftp.yar.ru/ftp/old/${name}.tar.bz2" "http://lftp.yar.ru/ftp/old/${name}.tar.bz2"
]; ];
sha256 = "0z2432zxzg808swi72yak9kia976qrjj030grk0v4p54mcib3s34"; sha256 = "0a4sp9khqgny1md0b2c9vvg4c7sz0g31w3sfdslxw7dsvijin3mn";
}; };
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];
buildInputs = [ gnutls readline zlib libidn2 gmp libiconv ] buildInputs = [ gnutls readline zlib libidn2 gmp libiconv libunistring ]
++ stdenv.lib.optional stdenv.isDarwin gettext; ++ stdenv.lib.optional stdenv.isDarwin gettext;
hardeningDisable = stdenv.lib.optional stdenv.isDarwin "format"; hardeningDisable = stdenv.lib.optional stdenv.isDarwin "format";

View File

@ -5157,6 +5157,8 @@ with pkgs;
xwinmosaic = callPackage ../tools/X11/xwinmosaic {}; xwinmosaic = callPackage ../tools/X11/xwinmosaic {};
xwinwrap = callPackage ../tools/X11/xwinwrap {};
yaft = callPackage ../applications/misc/yaft { }; yaft = callPackage ../applications/misc/yaft { };
yarn = callPackage ../development/tools/yarn { }; yarn = callPackage ../development/tools/yarn { };
@ -9906,17 +9908,9 @@ with pkgs;
openbabel = callPackage ../development/libraries/openbabel { }; openbabel = callPackage ../development/libraries/openbabel { };
opencascade = callPackage ../development/libraries/opencascade { opencascade = callPackage ../development/libraries/opencascade { };
tcl = tcl-8_5;
tk = tk-8_5;
};
opencascade_6_5 = callPackage ../development/libraries/opencascade/6.5.nix { opencascade_oce = opencascade;
automake = automake111x;
ftgl = ftgl212;
};
opencascade_oce = callPackage ../development/libraries/opencascade/oce.nix { };
opencl-headers = callPackage ../development/libraries/opencl-headers { }; opencl-headers = callPackage ../development/libraries/opencl-headers { };
@ -11123,6 +11117,10 @@ with pkgs;
go = go_1_8; go = go_1_8;
}; };
buildGo19Package = callPackage ../development/go-modules/generic {
go = go_1_9;
};
buildGoPackage = buildGo18Package; buildGoPackage = buildGo18Package;
go2nix = callPackage ../development/tools/go2nix { }; go2nix = callPackage ../development/tools/go2nix { };
@ -11684,7 +11682,7 @@ with pkgs;
libmemcached = null; # Detection is broken upstream libmemcached = null; # Detection is broken upstream
}; };
postgresql = postgresql95; postgresql = postgresql96;
inherit (callPackages ../servers/sql/postgresql { }) inherit (callPackages ../servers/sql/postgresql { })
postgresql93 postgresql93
@ -14546,7 +14544,6 @@ with pkgs;
freecad = callPackage ../applications/graphics/freecad { freecad = callPackage ../applications/graphics/freecad {
boost = boost155; boost = boost155;
opencascade = opencascade_oce;
}; };
freemind = callPackage ../applications/misc/freemind { }; freemind = callPackage ../applications/misc/freemind { };

View File

@ -7156,6 +7156,8 @@ in {
pycassa = callPackage ../development/python-modules/pycassa { }; pycassa = callPackage ../development/python-modules/pycassa { };
pyblake2 = callPackage ../development/python-modules/pyblake2 { };
pybluez = buildPythonPackage rec { pybluez = buildPythonPackage rec {
version = "unstable-20160819"; version = "unstable-20160819";
pname = "pybluez"; pname = "pybluez";
@ -18428,26 +18430,8 @@ in {
requests_oauthlib = callPackage ../development/python-modules/requests-oauthlib.nix { }; requests_oauthlib = callPackage ../development/python-modules/requests-oauthlib.nix { };
requests_toolbelt = buildPythonPackage rec { requests-toolbelt = callPackage ../development/python-modules/requests-toolbelt { };
version = "0.7.1"; requests_toolbelt = self.requests-toolbelt; # Old attr, 2017-09-26
name = "requests-toolbelt-${version}";
src = pkgs.fetchurl {
url = "https://github.com/sigmavirus24/requests-toolbelt/archive/${version}.tar.gz";
sha256 = "16grklnbgcfwqj3f39gw7fc9afi7xlp9gm7x8w6mi81dzhdxf50y";
};
propagatedBuildInputs = with self; [ requests ];
buildInputs = with self; [ betamax mock pytest ];
meta = {
description = "A toolbelt of useful classes and functions to be used with python-requests";
homepage = http://toolbelt.rtfd.org;
maintainers = with maintainers; [ matthiasbeyer jgeerds ];
};
};
retry_decorator = buildPythonPackage rec { retry_decorator = buildPythonPackage rec {
name = "retry_decorator-1.0.0"; name = "retry_decorator-1.0.0";
@ -21944,27 +21928,7 @@ in {
}; };
}; };
twine = buildPythonPackage rec { twine = callPackage ../development/python-modules/twine { };
name = "twine-${version}";
version = "1.8.1";
src = pkgs.fetchurl {
url = "mirror://pypi/t/twine/${name}.tar.gz";
sha256 = "68b663691a947b844f92853c992d42bb68b6333bffc9ab7f661346b001c1da82";
};
propagatedBuildInputs = with self; [ clint pkginfo requests requests_toolbelt ];
# Requires network
doCheck = false;
meta = {
description = "Collection of utilities for interacting with PyPI";
homepage = https://github.com/pypa/twine;
license = licenses.asl20;
maintainer = with maintainers; [ fridh ];
};
};
twisted = callPackage ../development/python-modules/twisted { }; twisted = callPackage ../development/python-modules/twisted { };