Merge branch 'master' into staging

This commit is contained in:
Vladimír Čunát 2016-11-26 11:27:09 +01:00
commit 925b335607
No known key found for this signature in database
GPG Key ID: E747DF1F9575A3AA
173 changed files with 6340 additions and 4415 deletions

View File

@ -32,4 +32,4 @@ See the nixpkgs manual for more details on how to [Submit changes to nixpkgs](ht
## Reviewing contributions ## Reviewing contributions
See the nixpkgs manual for more details on how to [Review contributions](http://hydra.nixos.org/job/nixpkgs/trunk/manual/latest/download-by-type/doc/manual#chap-reviewing-contributions). See the nixpkgs manual for more details on how to [Review contributions](https://nixos.org/nixpkgs/manual/#sec-reviewing-contributions).

View File

@ -1,7 +1,8 @@
{ {
"userBlacklist": [ "userBlacklist": [
"civodul", "civodul",
"jhasse" "jhasse",
"shlevy"
], ],
"alwaysNotifyForPaths": [ "alwaysNotifyForPaths": [
{ "name": "FRidh", "files": ["pkgs/top-level/python-packages.nix", "pkgs/development/interpreters/python/*", "pkgs/development/python-modules/*" ] }, { "name": "FRidh", "files": ["pkgs/top-level/python-packages.nix", "pkgs/development/interpreters/python/*", "pkgs/development/python-modules/*" ] },

View File

@ -25,6 +25,6 @@ stdenv.mkDerivation {
# Generate the squashfs image. # Generate the squashfs image.
mksquashfs nix-path-registration $storePaths $out \ mksquashfs nix-path-registration $storePaths $out \
-keep-as-directory -all-root -keep-as-directory -all-root -comp xz
''; '';
} }

View File

@ -7,7 +7,7 @@
# Include some utilities that are useful for installing or repairing # Include some utilities that are useful for installing or repairing
# the system. # the system.
environment.systemPackages = [ environment.systemPackages = [
pkgs.w3m # needed for the manual anyway pkgs.w3m-nox # needed for the manual anyway
pkgs.testdisk # useful for repairing boot problems pkgs.testdisk # useful for repairing boot problems
pkgs.mssys # for writing Microsoft boot sectors / MBRs pkgs.mssys # for writing Microsoft boot sectors / MBRs
pkgs.efibootmgr pkgs.efibootmgr
@ -42,8 +42,6 @@
# Some compression/archiver tools. # Some compression/archiver tools.
pkgs.unzip pkgs.unzip
pkgs.zip pkgs.zip
pkgs.dar # disk archiver
pkgs.cabextract
]; ];
# Include support for various filesystems. # Include support for various filesystems.

View File

@ -14,4 +14,6 @@ with lib;
programs.man.enable = mkDefault false; programs.man.enable = mkDefault false;
programs.info.enable = mkDefault false; programs.info.enable = mkDefault false;
sound.enable = mkDefault false;
} }

View File

@ -5,28 +5,62 @@ with lib;
let let
cfg = config.services.kubernetes; cfg = config.services.kubernetes;
skipAttrs = attrs: map (filterAttrs (k: v: k != "enable"))
(filter (v: !(hasAttr "enable" v) || v.enable) attrs);
infraContainer = pkgs.dockerTools.buildImage {
name = "pause";
tag = "latest";
contents = cfg.package.pause;
config.Cmd = "/bin/pause";
};
kubeconfig = pkgs.writeText "kubeconfig" (builtins.toJSON {
apiVersion = "v1";
kind = "Config";
clusters = [{
name = "local";
cluster.certificate-authority = cfg.kubeconfig.caFile;
cluster.server = cfg.kubeconfig.server;
}];
users = [{
name = "kubelet";
user = {
client-certificate = cfg.kubeconfig.certFile;
client-key = cfg.kubeconfig.keyFile;
};
}];
contexts = [{
context = {
cluster = "local";
user = "kubelet";
};
current-context = "kubelet-context";
}];
});
policyFile = pkgs.writeText "kube-policy"
concatStringsSep "\n" (map (builtins.toJSON cfg.apiserver.authorizationPolicy));
cniConfig = pkgs.buildEnv {
name = "kubernetes-cni-config";
paths = imap (i: entry:
pkgs.writeTextDir "${10+i}-${entry.type}.conf" (builtins.toJSON entry)
) cfg.kubelet.cni.config;
};
manifests = pkgs.buildEnv {
name = "kubernetes-manifests";
paths = mapAttrsToList (name: manifest:
pkgs.writeTextDir "${name}.json" (builtins.toJSON manifest)
) cfg.kubelet.manifests;
};
in { in {
###### interface ###### interface
options.services.kubernetes = { options.services.kubernetes = {
package = mkOption {
description = "Kubernetes package to use.";
type = types.package;
};
verbose = mkOption {
description = "Kubernetes enable verbose mode for debugging";
default = false;
type = types.bool;
};
etcdServers = mkOption {
description = "Kubernetes list of etcd servers to watch.";
default = [ "127.0.0.1:2379" ];
type = types.listOf types.str;
};
roles = mkOption { roles = mkOption {
description = '' description = ''
Kubernetes role that this machine should take. Kubernetes role that this machine should take.
@ -38,18 +72,76 @@ in {
type = types.listOf (types.enum ["master" "node"]); type = types.listOf (types.enum ["master" "node"]);
}; };
package = mkOption {
description = "Kubernetes package to use.";
type = types.package;
default = pkgs.kubernetes;
};
verbose = mkOption {
description = "Kubernetes enable verbose mode for debugging";
default = false;
type = types.bool;
};
etcd = {
servers = mkOption {
description = "List of etcd servers. By default etcd is started, except if this option is changed.";
default = ["http://127.0.0.1:2379"];
type = types.listOf types.str;
};
keyFile = mkOption {
description = "Etcd key file";
default = null;
type = types.nullOr types.path;
};
certFile = mkOption {
description = "Etcd cert file";
default = null;
type = types.nullOr types.path;
};
caFile = mkOption {
description = "Etcd ca file";
default = null;
type = types.nullOr types.path;
};
};
kubeconfig = {
server = mkOption {
description = "Kubernetes apiserver server address";
default = "http://${cfg.apiserver.address}:${toString cfg.apiserver.port}";
type = types.str;
};
caFile = mkOption {
description = "Certificate authrority file to use to connect to kuberentes apiserver";
type = types.nullOr types.path;
default = null;
};
certFile = mkOption {
description = "Client certificate file to use to connect to kubernetes";
type = types.nullOr types.path;
default = null;
};
keyFile = mkOption {
description = "Client key file to use to connect to kubernetes";
type = types.nullOr types.path;
default = null;
};
};
dataDir = mkOption { dataDir = mkOption {
description = "Kubernetes root directory for managing kubelet files."; description = "Kubernetes root directory for managing kubelet files.";
default = "/var/lib/kubernetes"; default = "/var/lib/kubernetes";
type = types.path; type = types.path;
}; };
dockerCfg = mkOption {
description = "Kubernetes contents of dockercfg file.";
default = "";
type = types.lines;
};
apiserver = { apiserver = {
enable = mkOption { enable = mkOption {
description = "Whether to enable kubernetes apiserver."; description = "Whether to enable kubernetes apiserver.";
@ -72,6 +164,16 @@ in {
type = types.str; type = types.str;
}; };
advertiseAddress = mkOption {
description = ''
Kubernetes apiserver IP address on which to advertise the apiserver
to members of the cluster. This address must be reachable by the rest
of the cluster.
'';
default = null;
type = types.nullOr types.str;
};
port = mkOption { port = mkOption {
description = "Kubernetes apiserver listening port."; description = "Kubernetes apiserver listening port.";
default = 8080; default = 8080;
@ -80,41 +182,36 @@ in {
securePort = mkOption { securePort = mkOption {
description = "Kubernetes apiserver secure port."; description = "Kubernetes apiserver secure port.";
default = 6443; default = 443;
type = types.int; type = types.int;
}; };
tlsCertFile = mkOption { tlsCertFile = mkOption {
description = "Kubernetes apiserver certificate file."; description = "Kubernetes apiserver certificate file.";
default = ""; default = null;
type = types.str; type = types.nullOr types.path;
}; };
tlsPrivateKeyFile = mkOption { tlsKeyFile = mkOption {
description = "Kubernetes apiserver private key file."; description = "Kubernetes apiserver private key file.";
default = ""; default = null;
type = types.str; type = types.nullOr types.path;
}; };
clientCaFile = mkOption { clientCaFile = mkOption {
description = "Kubernetes apiserver CA file for client auth."; description = "Kubernetes apiserver CA file for client auth.";
default = ""; default = null;
type = types.str; type = types.nullOr types.path;
}; };
tokenAuth = mkOption { tokenAuth = mkOption {
description = '' description = ''
Kubernetes apiserver token authentication file. See Kubernetes apiserver token authentication file. See
<link xlink:href="http://kubernetes.io/v1.0/docs/admin/authentication.html"/> <link xlink:href="http://kubernetes.io/docs/admin/authentication.html"/>
''; '';
default = {}; default = null;
example = literalExample '' example = ''token,user,uid,"group1,group2,group3"'';
{ type = types.nullOr types.lines;
alice = "abc123";
bob = "xyz987";
}
'';
type = types.attrsOf types.str;
}; };
authorizationMode = mkOption { authorizationMode = mkOption {
@ -148,13 +245,13 @@ in {
allowPrivileged = mkOption { allowPrivileged = mkOption {
description = "Whether to allow privileged containers on kubernetes."; description = "Whether to allow privileged containers on kubernetes.";
default = false; default = true;
type = types.bool; type = types.bool;
}; };
portalNet = mkOption { portalNet = mkOption {
description = "Kubernetes CIDR notation IP range from which to assign portal IPs"; description = "Kubernetes CIDR notation IP range from which to assign portal IPs";
default = "10.10.10.10/16"; default = "10.10.10.10/24";
type = types.str; type = types.str;
}; };
@ -171,9 +268,9 @@ in {
admissionControl = mkOption { admissionControl = mkOption {
description = '' description = ''
Kubernetes admission control plugins to use. See Kubernetes admission control plugins to use. See
<link xlink:href="http://kubernetes.io/v1.0/docs/admin/admission-controllers.html"/> <link xlink:href="http://kubernetes.io/docs/admin/admission-controllers/"/>
''; '';
default = ["AlwaysAdmit"]; default = ["NamespaceLifecycle" "LimitRanger" "ServiceAccount" "ResourceQuota"];
example = [ example = [
"NamespaceLifecycle" "NamespaceExists" "LimitRanger" "NamespaceLifecycle" "NamespaceExists" "LimitRanger"
"SecurityContextDeny" "ServiceAccount" "ResourceQuota" "SecurityContextDeny" "ServiceAccount" "ResourceQuota"
@ -181,15 +278,40 @@ in {
type = types.listOf types.str; type = types.listOf types.str;
}; };
serviceAccountKey = mkOption { serviceAccountKeyFile = mkOption {
description = '' description = ''
Kubernetes apiserver PEM-encoded x509 RSA private or public key file, Kubernetes apiserver PEM-encoded x509 RSA private or public key file,
used to verify ServiceAccount tokens. used to verify ServiceAccount tokens. By default tls private key file
is used.
''; '';
default = null; default = null;
type = types.nullOr types.path; type = types.nullOr types.path;
}; };
kubeletClientCaFile = mkOption {
description = "Path to a cert file for connecting to kubelet";
default = null;
type = types.nullOr types.path;
};
kubeletClientCertFile = mkOption {
description = "Client certificate to use for connections to kubelet";
default = null;
type = types.nullOr types.path;
};
kubeletClientKeyFile = mkOption {
description = "Key to use for connections to kubelet";
default = null;
type = types.nullOr types.path;
};
kubeletHttps = mkOption {
description = "Whether to use https for connections to kubelet";
default = true;
type = types.bool;
};
extraOpts = mkOption { extraOpts = mkOption {
description = "Kubernetes apiserver extra command line options."; description = "Kubernetes apiserver extra command line options.";
default = ""; default = "";
@ -216,10 +338,10 @@ in {
type = types.int; type = types.int;
}; };
master = mkOption { leaderElect = mkOption {
description = "Kubernetes apiserver address"; description = "Whether to start leader election before executing main loop";
default = "${cfg.apiserver.address}:${toString cfg.apiserver.port}"; type = types.bool;
type = types.str; default = false;
}; };
extraOpts = mkOption { extraOpts = mkOption {
@ -248,13 +370,13 @@ in {
type = types.int; type = types.int;
}; };
master = mkOption { leaderElect = mkOption {
description = "Kubernetes apiserver address"; description = "Whether to start leader election before executing main loop";
default = "${cfg.apiserver.address}:${toString cfg.apiserver.port}"; type = types.bool;
type = types.str; default = false;
}; };
serviceAccountPrivateKey = mkOption { serviceAccountKeyFile = mkOption {
description = '' description = ''
Kubernetes controller manager PEM-encoded private RSA key file used to Kubernetes controller manager PEM-encoded private RSA key file used to
sign service account tokens sign service account tokens
@ -272,6 +394,12 @@ in {
type = types.nullOr types.path; type = types.nullOr types.path;
}; };
clusterCidr = mkOption {
description = "Kubernetes controller manager CIDR Range for Pods in cluster";
default = "10.10.0.0/16";
type = types.str;
};
extraOpts = mkOption { extraOpts = mkOption {
description = "Kubernetes controller manager extra command line options."; description = "Kubernetes controller manager extra command line options.";
default = ""; default = "";
@ -292,6 +420,12 @@ in {
type = types.bool; type = types.bool;
}; };
registerSchedulable = mkOption {
description = "Register the node as schedulable. No-op if register-node is false.";
default = true;
type = types.bool;
};
address = mkOption { address = mkOption {
description = "Kubernetes kubelet info server listening address."; description = "Kubernetes kubelet info server listening address.";
default = "0.0.0.0"; default = "0.0.0.0";
@ -304,6 +438,18 @@ in {
type = types.int; type = types.int;
}; };
tlsCertFile = mkOption {
description = "File containing x509 Certificate for HTTPS.";
default = null;
type = types.nullOr types.path;
};
tlsKeyFile = mkOption {
description = "File containing x509 private key matching tlsCertFile.";
default = null;
type = types.nullOr types.path;
};
healthz = { healthz = {
bind = mkOption { bind = mkOption {
description = "Kubernetes kubelet healthz listening address."; description = "Kubernetes kubelet healthz listening address.";
@ -326,19 +472,10 @@ in {
allowPrivileged = mkOption { allowPrivileged = mkOption {
description = "Whether to allow kubernetes containers to request privileged mode."; description = "Whether to allow kubernetes containers to request privileged mode.";
default = false; default = true;
type = types.bool; type = types.bool;
}; };
apiServers = mkOption {
description = ''
Kubernetes kubelet list of Kubernetes API servers for publishing events,
and reading pods and services.
'';
default = ["${cfg.apiserver.address}:${toString cfg.apiserver.port}"];
type = types.listOf types.str;
};
cadvisorPort = mkOption { cadvisorPort = mkOption {
description = "Kubernetes kubelet local cadvisor port."; description = "Kubernetes kubelet local cadvisor port.";
default = 4194; default = 4194;
@ -347,16 +484,62 @@ in {
clusterDns = mkOption { clusterDns = mkOption {
description = "Use alternative dns."; description = "Use alternative dns.";
default = ""; default = "10.10.1.1";
type = types.str; type = types.str;
}; };
clusterDomain = mkOption { clusterDomain = mkOption {
description = "Use alternative domain."; description = "Use alternative domain.";
default = "kubernetes.io"; default = "cluster.local";
type = types.str; type = types.str;
}; };
networkPlugin = mkOption {
description = "Network plugin to use by kubernetes";
type = types.nullOr (types.enum ["cni" "kubenet"]);
default = "kubenet";
};
cni = {
packages = mkOption {
description = "List of network plugin packages to install";
type = types.listOf types.package;
default = [];
};
config = mkOption {
description = "Kubernetes CNI configuration";
type = types.listOf types.attrs;
default = [];
example = literalExample ''
[{
"cniVersion": "0.2.0",
"name": "mynet",
"type": "bridge",
"bridge": "cni0",
"isGateway": true,
"ipMasq": true,
"ipam": {
"type": "host-local",
"subnet": "10.22.0.0/16",
"routes": [
{ "dst": "0.0.0.0/0" }
]
}
} {
"cniVersion": "0.2.0",
"type": "loopback"
}]
'';
};
};
manifests = mkOption {
description = "List of manifests to bootstrap with kubelet";
type = types.attrsOf types.attrs;
default = {};
};
extraOpts = mkOption { extraOpts = mkOption {
description = "Kubernetes kubelet extra command line options."; description = "Kubernetes kubelet extra command line options.";
default = ""; default = "";
@ -377,12 +560,6 @@ in {
type = types.str; type = types.str;
}; };
master = mkOption {
description = "Kubernetes apiserver address";
default = "${cfg.apiserver.address}:${toString cfg.apiserver.port}";
type = types.str;
};
extraOpts = mkOption { extraOpts = mkOption {
description = "Kubernetes proxy extra command line options."; description = "Kubernetes proxy extra command line options.";
default = ""; default = "";
@ -390,23 +567,23 @@ in {
}; };
}; };
kube2sky = { dns = {
enable = mkEnableOption "Whether to enable kube2sky dns service."; enable = mkEnableOption "kubernetes dns service.";
port = mkOption {
description = "Kubernetes dns listening port";
default = 53;
type = types.int;
};
domain = mkOption { domain = mkOption {
description = "Kuberntes kube2sky domain under which all DNS names will be hosted."; description = "Kuberntes dns domain under which to create names.";
default = cfg.kubelet.clusterDomain; default = cfg.kubelet.clusterDomain;
type = types.str; type = types.str;
}; };
master = mkOption {
description = "Kubernetes apiserver address";
default = "${cfg.apiserver.address}:${toString cfg.apiserver.port}";
type = types.str;
};
extraOpts = mkOption { extraOpts = mkOption {
description = "Kubernetes kube2sky extra command line options."; description = "Kubernetes dns extra command line options.";
default = ""; default = "";
type = types.str; type = types.str;
}; };
@ -416,50 +593,118 @@ in {
###### implementation ###### implementation
config = mkMerge [ config = mkMerge [
(mkIf cfg.kubelet.enable {
systemd.services.kubelet = {
description = "Kubernetes Kubelet Service";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" "docker.service" "kube-apiserver.service" ];
path = with pkgs; [ gitMinimal openssh docker utillinux iproute ethtool thin-provisioning-tools iptables ];
preStart = ''
docker load < ${infraContainer}
rm /opt/cni/bin/* || true
${concatMapStringsSep "\n" (p: "ln -fs ${p.plugins}/* /opt/cni/bin") cfg.kubelet.cni.packages}
'';
serviceConfig = {
ExecStart = ''${cfg.package}/bin/kubelet \
--pod-manifest-path=${manifests} \
--kubeconfig=${kubeconfig} \
--require-kubeconfig \
--address=${cfg.kubelet.address} \
--port=${toString cfg.kubelet.port} \
--register-node=${if cfg.kubelet.registerNode then "true" else "false"} \
--register-schedulable=${if cfg.kubelet.registerSchedulable then "true" else "false"} \
${optionalString (cfg.kubelet.tlsCertFile != null)
"--tls-cert-file=${cfg.kubelet.tlsCertFile}"} \
${optionalString (cfg.kubelet.tlsKeyFile != null)
"--tls-private-key-file=${cfg.kubelet.tlsKeyFile}"} \
--healthz-bind-address=${cfg.kubelet.healthz.bind} \
--healthz-port=${toString cfg.kubelet.healthz.port} \
--hostname-override=${cfg.kubelet.hostname} \
--allow-privileged=${if cfg.kubelet.allowPrivileged then "true" else "false"} \
--root-dir=${cfg.dataDir} \
--cadvisor_port=${toString cfg.kubelet.cadvisorPort} \
${optionalString (cfg.kubelet.clusterDns != "")
"--cluster-dns=${cfg.kubelet.clusterDns}"} \
${optionalString (cfg.kubelet.clusterDomain != "")
"--cluster-domain=${cfg.kubelet.clusterDomain}"} \
--pod-infra-container-image=pause \
${optionalString (cfg.kubelet.networkPlugin != null)
"--network-plugin=${cfg.kubelet.networkPlugin}"} \
--cni-conf-dir=${cniConfig} \
--reconcile-cidr \
--hairpin-mode=hairpin-veth \
${optionalString cfg.verbose "--v=6 --log_flush_frequency=1s"} \
${cfg.kubelet.extraOpts}
'';
WorkingDirectory = cfg.dataDir;
};
};
environment.etc = mapAttrs' (name: manifest:
nameValuePair "kubernetes/manifests/${name}.json" {
text = builtins.toJSON manifest;
mode = "0755";
}
) cfg.kubelet.manifests;
# Allways include cni plugins
services.kubernetes.kubelet.cni.packages = [pkgs.cni];
})
(mkIf cfg.apiserver.enable { (mkIf cfg.apiserver.enable {
systemd.services.kube-apiserver = { systemd.services.kube-apiserver = {
description = "Kubernetes Api Server"; description = "Kubernetes Kubelet Service";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
requires = ["kubernetes-setup.service"]; after = [ "network.target" "docker.service" ];
after = [ "network.target" "etcd.service" "kubernetes-setup.service" ];
serviceConfig = { serviceConfig = {
ExecStart = let ExecStart = ''${cfg.package}/bin/kube-apiserver \
authorizationPolicyFile = --etcd-servers=${concatStringsSep "," cfg.etcd.servers} \
pkgs.writeText "kubernetes-policy" ${optionalString (cfg.etcd.caFile != null)
(builtins.toJSON cfg.apiserver.authorizationPolicy); "--etcd-cafile=${cfg.etcd.caFile}"} \
tokenAuthFile = ${optionalString (cfg.etcd.certFile != null)
pkgs.writeText "kubernetes-auth" "--etcd-certfile=${cfg.etcd.certFile}"} \
(concatImapStringsSep "\n" (i: v: v + "," + (toString i)) ${optionalString (cfg.etcd.keyFile != null)
(mapAttrsToList (name: token: token + "," + name) cfg.apiserver.tokenAuth)); "--etcd-keyfile=${cfg.etcd.keyFile}"} \
in ''${cfg.package}/bin/kube-apiserver \
--etcd-servers=${concatMapStringsSep "," (f: "http://${f}") cfg.etcdServers} \
--insecure-bind-address=${cfg.apiserver.address} \
--insecure-port=${toString cfg.apiserver.port} \ --insecure-port=${toString cfg.apiserver.port} \
--bind-address=${cfg.apiserver.publicAddress} \ --bind-address=0.0.0.0 \
${optionalString (cfg.apiserver.advertiseAddress != null)
"--advertise-address=${cfg.apiserver.advertiseAddress}"} \
--allow-privileged=${if cfg.apiserver.allowPrivileged then "true" else "false"} \ --allow-privileged=${if cfg.apiserver.allowPrivileged then "true" else "false"} \
${optionalString (cfg.apiserver.tlsCertFile!="") ${optionalString (cfg.apiserver.tlsCertFile != null)
"--tls-cert-file=${cfg.apiserver.tlsCertFile}"} \ "--tls-cert-file=${cfg.apiserver.tlsCertFile}"} \
${optionalString (cfg.apiserver.tlsPrivateKeyFile!="") ${optionalString (cfg.apiserver.tlsKeyFile != null)
"--tls-private-key-file=${cfg.apiserver.tlsPrivateKeyFile}"} \ "--tls-private-key-file=${cfg.apiserver.tlsKeyFile}"} \
${optionalString (cfg.apiserver.tokenAuth!=[]) ${optionalString (cfg.apiserver.tokenAuth != null)
"--token-auth-file=${tokenAuthFile}"} \ "--token-auth-file=${cfg.apiserver.tokenAuth}"} \
${optionalString (cfg.apiserver.clientCaFile!="") --kubelet-https=${if cfg.apiserver.kubeletHttps then "true" else "false"} \
${optionalString (cfg.apiserver.kubeletClientCaFile != null)
"--kubelet-certificate-authority=${cfg.apiserver.kubeletClientCaFile}"} \
${optionalString (cfg.apiserver.kubeletClientCertFile != null)
"--kubelet-client-certificate=${cfg.apiserver.kubeletClientCertFile}"} \
${optionalString (cfg.apiserver.kubeletClientKeyFile != null)
"--kubelet-client-key=${cfg.apiserver.kubeletClientKeyFile}"} \
${optionalString (cfg.apiserver.clientCaFile != null)
"--client-ca-file=${cfg.apiserver.clientCaFile}"} \ "--client-ca-file=${cfg.apiserver.clientCaFile}"} \
--authorization-mode=${cfg.apiserver.authorizationMode} \ --authorization-mode=${cfg.apiserver.authorizationMode} \
${optionalString (cfg.apiserver.authorizationMode == "ABAC") ${optionalString (cfg.apiserver.authorizationMode == "ABAC")
"--authorization-policy-file=${authorizationPolicyFile}"} \ "--authorization-policy-file=${policyFile}"} \
--secure-port=${toString cfg.apiserver.securePort} \ --secure-port=${toString cfg.apiserver.securePort} \
--service-cluster-ip-range=${cfg.apiserver.portalNet} \ --service-cluster-ip-range=${cfg.apiserver.portalNet} \
${optionalString (cfg.apiserver.runtimeConfig!="") ${optionalString (cfg.apiserver.runtimeConfig != "")
"--runtime-config=${cfg.apiserver.runtimeConfig}"} \ "--runtime-config=${cfg.apiserver.runtimeConfig}"} \
--admission_control=${concatStringsSep "," cfg.apiserver.admissionControl} \ --admission_control=${concatStringsSep "," cfg.apiserver.admissionControl} \
${optionalString (cfg.apiserver.serviceAccountKey!=null) ${optionalString (cfg.apiserver.serviceAccountKeyFile!=null)
"--service-account-key-file=${cfg.apiserver.serviceAccountKey}"} \ "--service-account-key-file=${cfg.apiserver.serviceAccountKeyFile}"} \
--logtostderr=true \ ${optionalString cfg.verbose "--v=6"} \
${optionalString cfg.verbose "--v=6 --log-flush-frequency=1s"} \ ${optionalString cfg.verbose "--log-flush-frequency=1s"} \
${cfg.apiserver.extraOpts} ${cfg.apiserver.extraOpts}
''; '';
WorkingDirectory = cfg.dataDir;
User = "kubernetes"; User = "kubernetes";
Group = "kubernetes";
AmbientCapabilities = "cap_net_bind_service";
Restart = "on-failure";
RestartSec = 5;
}; };
}; };
}) })
@ -468,17 +713,20 @@ in {
systemd.services.kube-scheduler = { systemd.services.kube-scheduler = {
description = "Kubernetes Scheduler Service"; description = "Kubernetes Scheduler Service";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ "network.target" "kubernetes-apiserver.service" ]; after = [ "kube-apiserver.service" ];
serviceConfig = { serviceConfig = {
ExecStart = ''${cfg.package}/bin/kube-scheduler \ ExecStart = ''${cfg.package}/bin/kube-scheduler \
--address=${cfg.scheduler.address} \ --address=${cfg.scheduler.address} \
--port=${toString cfg.scheduler.port} \ --port=${toString cfg.scheduler.port} \
--master=${cfg.scheduler.master} \ --leader-elect=${if cfg.scheduler.leaderElect then "true" else "false"} \
--logtostderr=true \ --kubeconfig=${kubeconfig} \
${optionalString cfg.verbose "--v=6 --log-flush-frequency=1s"} \ ${optionalString cfg.verbose "--v=6"} \
${optionalString cfg.verbose "--log-flush-frequency=1s"} \
${cfg.scheduler.extraOpts} ${cfg.scheduler.extraOpts}
''; '';
WorkingDirectory = cfg.dataDir;
User = "kubernetes"; User = "kubernetes";
Group = "kubernetes";
}; };
}; };
}) })
@ -487,113 +735,94 @@ in {
systemd.services.kube-controller-manager = { systemd.services.kube-controller-manager = {
description = "Kubernetes Controller Manager Service"; description = "Kubernetes Controller Manager Service";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ "network.target" "kubernetes-apiserver.service" ]; after = [ "kube-apiserver.service" ];
serviceConfig = { serviceConfig = {
ExecStart = ''${cfg.package}/bin/kube-controller-manager \ ExecStart = ''${cfg.package}/bin/kube-controller-manager \
--address=${cfg.controllerManager.address} \ --address=${cfg.controllerManager.address} \
--port=${toString cfg.controllerManager.port} \ --port=${toString cfg.controllerManager.port} \
--master=${cfg.controllerManager.master} \ --kubeconfig=${kubeconfig} \
${optionalString (cfg.controllerManager.serviceAccountPrivateKey!=null) --leader-elect=${if cfg.controllerManager.leaderElect then "true" else "false"} \
"--service-account-private-key-file=${cfg.controllerManager.serviceAccountPrivateKey}"} \ ${if (cfg.controllerManager.serviceAccountKeyFile!=null)
then "--service-account-private-key-file=${cfg.controllerManager.serviceAccountKeyFile}"
else "--service-account-private-key-file=/var/run/kubernetes/apiserver.key"} \
${optionalString (cfg.controllerManager.rootCaFile!=null) ${optionalString (cfg.controllerManager.rootCaFile!=null)
"--root-ca-file=${cfg.controllerManager.rootCaFile}"} \ "--root-ca-file=${cfg.controllerManager.rootCaFile}"} \
--logtostderr=true \ ${optionalString (cfg.controllerManager.clusterCidr!=null)
${optionalString cfg.verbose "--v=6 --log-flush-frequency=1s"} \ "--cluster-cidr=${cfg.controllerManager.clusterCidr}"} \
--allocate-node-cidrs=true \
${optionalString cfg.verbose "--v=6"} \
${optionalString cfg.verbose "--log-flush-frequency=1s"} \
${cfg.controllerManager.extraOpts} ${cfg.controllerManager.extraOpts}
''; '';
WorkingDirectory = cfg.dataDir;
User = "kubernetes"; User = "kubernetes";
Group = "kubernetes";
}; };
}; };
}) })
(mkIf cfg.kubelet.enable {
systemd.services.kubelet = {
description = "Kubernetes Kubelet Service";
wantedBy = [ "multi-user.target" ];
requires = ["kubernetes-setup.service"];
after = [ "network.target" "etcd.service" "docker.service" "kubernetes-setup.service" ];
path = [ pkgs.gitMinimal pkgs.openssh ];
script = ''
export PATH="/bin:/sbin:/usr/bin:/usr/sbin:$PATH"
exec ${cfg.package}/bin/kubelet \
--api-servers=${concatMapStringsSep "," (f: "http://${f}") cfg.kubelet.apiServers} \
--register-node=${if cfg.kubelet.registerNode then "true" else "false"} \
--address=${cfg.kubelet.address} \
--port=${toString cfg.kubelet.port} \
--healthz-bind-address=${cfg.kubelet.healthz.bind} \
--healthz-port=${toString cfg.kubelet.healthz.port} \
--hostname-override=${cfg.kubelet.hostname} \
--allow-privileged=${if cfg.kubelet.allowPrivileged then "true" else "false"} \
--root-dir=${cfg.dataDir} \
--cadvisor_port=${toString cfg.kubelet.cadvisorPort} \
${optionalString (cfg.kubelet.clusterDns != "")
''--cluster-dns=${cfg.kubelet.clusterDns}''} \
${optionalString (cfg.kubelet.clusterDomain != "")
''--cluster-domain=${cfg.kubelet.clusterDomain}''} \
--logtostderr=true \
${optionalString cfg.verbose "--v=6 --log_flush_frequency=1s"} \
${cfg.kubelet.extraOpts}
'';
serviceConfig.WorkingDirectory = cfg.dataDir;
};
})
(mkIf cfg.proxy.enable { (mkIf cfg.proxy.enable {
systemd.services.kube-proxy = { systemd.services.kube-proxy = {
description = "Kubernetes Proxy Service"; description = "Kubernetes Proxy Service";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ "network.target" "etcd.service" ]; after = [ "kube-apiserver.service" ];
path = [pkgs.iptables];
serviceConfig = { serviceConfig = {
ExecStart = ''${cfg.package}/bin/kube-proxy \ ExecStart = ''${cfg.package}/bin/kube-proxy \
--master=${cfg.proxy.master} \ --kubeconfig=${kubeconfig} \
--bind-address=${cfg.proxy.address} \ --bind-address=${cfg.proxy.address} \
--logtostderr=true \ ${optionalString cfg.verbose "--v=6"} \
${optionalString cfg.verbose "--v=6 --log-flush-frequency=1s"} \ ${optionalString cfg.verbose "--log-flush-frequency=1s"} \
${cfg.proxy.extraOpts} ${cfg.controllerManager.extraOpts}
''; '';
Restart = "always"; # Retry connection WorkingDirectory = cfg.dataDir;
RestartSec = "5s";
}; };
}; };
}) })
(mkIf cfg.kube2sky.enable { (mkIf cfg.dns.enable {
systemd.services.kube2sky = { systemd.services.kube-dns = {
description = "Kubernetes Dns Bridge Service"; description = "Kubernetes Dns Service";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ "network.target" "skydns.service" "etcd.service" "kubernetes-apiserver.service" ]; after = [ "kube-apiserver.service" ];
serviceConfig = { serviceConfig = {
ExecStart = ''${cfg.package}/bin/kube2sky \ ExecStart = ''${cfg.package}/bin/kube-dns \
-etcd-server=http://${head cfg.etcdServers} \ --kubecfg-file=${kubeconfig} \
-domain=${cfg.kube2sky.domain} \ --dns-port=${toString cfg.dns.port} \
-kube_master_url=http://${cfg.kube2sky.master} \ --domain=${cfg.dns.domain} \
-logtostderr=true \ ${optionalString cfg.verbose "--v=6"} \
${optionalString cfg.verbose "--v=6 --log-flush-frequency=1s"} \ ${optionalString cfg.verbose "--log-flush-frequency=1s"} \
${cfg.kube2sky.extraOpts} ${cfg.dns.extraOpts}
''; '';
WorkingDirectory = cfg.dataDir;
User = "kubernetes"; User = "kubernetes";
Group = "kubernetes";
AmbientCapabilities = "cap_net_bind_service";
SendSIGHUP = true;
}; };
}; };
}) })
(mkIf cfg.kubelet.enable {
boot.kernelModules = ["br_netfilter"];
})
(mkIf (any (el: el == "master") cfg.roles) { (mkIf (any (el: el == "master") cfg.roles) {
virtualisation.docker.enable = mkDefault true;
services.kubernetes.kubelet.enable = mkDefault true;
services.kubernetes.kubelet.allowPrivileged = mkDefault true;
services.kubernetes.apiserver.enable = mkDefault true; services.kubernetes.apiserver.enable = mkDefault true;
services.kubernetes.scheduler.enable = mkDefault true; services.kubernetes.scheduler.enable = mkDefault true;
services.kubernetes.controllerManager.enable = mkDefault true; services.kubernetes.controllerManager.enable = mkDefault true;
services.kubernetes.kube2sky.enable = mkDefault true; services.etcd.enable = mkDefault (cfg.etcd.servers == ["http://127.0.0.1:2379"]);
}) })
(mkIf (any (el: el == "node") cfg.roles) { (mkIf (any (el: el == "node") cfg.roles) {
virtualisation.docker.enable = mkDefault true; virtualisation.docker.enable = mkDefault true;
virtualisation.docker.logDriver = mkDefault "json-file";
services.kubernetes.kubelet.enable = mkDefault true; services.kubernetes.kubelet.enable = mkDefault true;
services.kubernetes.proxy.enable = mkDefault true; services.kubernetes.proxy.enable = mkDefault true;
}) services.kubernetes.dns.enable = mkDefault true;
(mkIf (any (el: el == "node" || el == "master") cfg.roles) {
services.etcd.enable = mkDefault true;
services.skydns.enable = mkDefault true;
services.skydns.domain = mkDefault cfg.kubelet.clusterDomain;
}) })
(mkIf ( (mkIf (
@ -601,24 +830,16 @@ in {
cfg.scheduler.enable || cfg.scheduler.enable ||
cfg.controllerManager.enable || cfg.controllerManager.enable ||
cfg.kubelet.enable || cfg.kubelet.enable ||
cfg.proxy.enable cfg.proxy.enable ||
cfg.dns.enable
) { ) {
systemd.services.kubernetes-setup = { systemd.tmpfiles.rules = [
description = "Kubernetes setup."; "d /opt/cni/bin 0755 root root -"
serviceConfig.Type = "oneshot"; "d /var/run/kubernetes 0755 kubernetes kubernetes -"
script = '' "d /var/lib/kubernetes 0755 kubernetes kubernetes -"
mkdir -p /var/run/kubernetes ];
chown kubernetes /var/lib/kubernetes
rm ${cfg.dataDir}/.dockercfg || true
ln -fs ${pkgs.writeText "kubernetes-dockercfg" cfg.dockerCfg} ${cfg.dataDir}/.dockercfg
'';
};
services.kubernetes.package = mkDefault pkgs.kubernetes;
environment.systemPackages = [ cfg.package ]; environment.systemPackages = [ cfg.package ];
users.extraUsers = singleton { users.extraUsers = singleton {
name = "kubernetes"; name = "kubernetes";
uid = config.ids.uids.kubernetes; uid = config.ids.uids.kubernetes;
@ -630,6 +851,5 @@ in {
}; };
users.extraGroups.kubernetes.gid = config.ids.gids.kubernetes; users.extraGroups.kubernetes.gid = config.ids.gids.kubernetes;
}) })
]; ];
} }

View File

@ -9,7 +9,7 @@ let
BaseDir "${cfg.dataDir}" BaseDir "${cfg.dataDir}"
PIDFile "${cfg.pidFile}" PIDFile "${cfg.pidFile}"
AutoLoadPlugin ${if cfg.autoLoadPlugin then "true" else "false"} AutoLoadPlugin ${if cfg.autoLoadPlugin then "true" else "false"}
Hostname ${config.networking.hostName} Hostname "${config.networking.hostName}"
LoadPlugin syslog LoadPlugin syslog
<Plugin "syslog"> <Plugin "syslog">

View File

@ -233,6 +233,12 @@ in
serviceConfig = { serviceConfig = {
Type = "simple"; Type = "simple";
PIDFile = pidfile; PIDFile = pidfile;
# Believe it or not, Tahoe is very brittle about the order of
# arguments to $(tahoe start). The node directory must come first,
# and arguments which alter Twisted's behavior come afterwards.
ExecStart = ''
${settings.package}/bin/tahoe start ${nodedir} -n -l- --pidfile=${pidfile}
'';
}; };
preStart = '' preStart = ''
if [ \! -d ${nodedir} ]; then if [ \! -d ${nodedir} ]; then
@ -248,12 +254,6 @@ in
# ln -s /etc/tahoe-lafs/introducer-${node}.cfg ${nodedir}/tahoe.cfg # ln -s /etc/tahoe-lafs/introducer-${node}.cfg ${nodedir}/tahoe.cfg
cp /etc/tahoe-lafs/introducer-${node}.cfg ${nodedir}/tahoe.cfg cp /etc/tahoe-lafs/introducer-${node}.cfg ${nodedir}/tahoe.cfg
''; '';
# Believe it or not, Tahoe is very brittle about the order of
# arguments to $(tahoe start). The node directory must come first,
# and arguments which alter Twisted's behavior come afterwards.
script = ''
tahoe start ${nodedir} -n -l- --pidfile=${pidfile}
'';
}); });
users.extraUsers = flip mapAttrs' cfg.introducers (node: _: users.extraUsers = flip mapAttrs' cfg.introducers (node: _:
nameValuePair "tahoe.introducer-${node}" { nameValuePair "tahoe.introducer-${node}" {
@ -333,6 +333,12 @@ in
serviceConfig = { serviceConfig = {
Type = "simple"; Type = "simple";
PIDFile = pidfile; PIDFile = pidfile;
# Believe it or not, Tahoe is very brittle about the order of
# arguments to $(tahoe start). The node directory must come first,
# and arguments which alter Twisted's behavior come afterwards.
ExecStart = ''
${settings.package}/bin/tahoe start ${nodedir} -n -l- --pidfile=${pidfile}
'';
}; };
preStart = '' preStart = ''
if [ \! -d ${nodedir} ]; then if [ \! -d ${nodedir} ]; then
@ -348,12 +354,6 @@ in
# ln -s /etc/tahoe-lafs/${node}.cfg ${nodedir}/tahoe.cfg # ln -s /etc/tahoe-lafs/${node}.cfg ${nodedir}/tahoe.cfg
cp /etc/tahoe-lafs/${node}.cfg ${nodedir}/tahoe.cfg cp /etc/tahoe-lafs/${node}.cfg ${nodedir}/tahoe.cfg
''; '';
# Believe it or not, Tahoe is very brittle about the order of
# arguments to $(tahoe start). The node directory must come first,
# and arguments which alter Twisted's behavior come afterwards.
script = ''
tahoe start ${nodedir} -n -l- --pidfile=${pidfile}
'';
}); });
users.extraUsers = flip mapAttrs' cfg.nodes (node: _: users.extraUsers = flip mapAttrs' cfg.nodes (node: _:
nameValuePair "tahoe.${node}" { nameValuePair "tahoe.${node}" {

View File

@ -82,12 +82,12 @@ let
# Speed up application start by 50-150ms according to # Speed up application start by 50-150ms according to
# http://kdemonkey.blogspot.nl/2008/04/magic-trick.html # http://kdemonkey.blogspot.nl/2008/04/magic-trick.html
rm -rf $HOME/.compose-cache rm -rf "$HOME/.compose-cache"
mkdir $HOME/.compose-cache mkdir "$HOME/.compose-cache"
# Work around KDE errors when a user first logs in and # Work around KDE errors when a user first logs in and
# .local/share doesn't exist yet. # .local/share doesn't exist yet.
mkdir -p $HOME/.local/share mkdir -p "$HOME/.local/share"
unset _DID_SYSTEMD_CAT unset _DID_SYSTEMD_CAT
@ -148,7 +148,7 @@ let
allowSubstitutes = false; allowSubstitutes = false;
} }
'' ''
mkdir -p $out mkdir -p "$out"
${concatMapStrings (n: '' ${concatMapStrings (n: ''
cat - > "$out/${n}.desktop" << EODESKTOP cat - > "$out/${n}.desktop" << EODESKTOP
[Desktop Entry] [Desktop Entry]

View File

@ -3,52 +3,58 @@
with lib; with lib;
let let
wmCfg = config.services.xserver.windowManager; cfg = config.services.xserver.windowManager.i3;
in
{
options.services.xserver.windowManager.i3 = {
enable = mkEnableOption "i3 window manager";
i3option = name: {
enable = mkEnableOption name;
configFile = mkOption { configFile = mkOption {
default = null; default = null;
type = types.nullOr types.path; type = with types; nullOr path;
description = '' description = ''
Path to the i3 configuration file. Path to the i3 configuration file.
If left at the default value, $HOME/.i3/config will be used. If left at the default value, $HOME/.i3/config will be used.
''; '';
}; };
extraSessionCommands = mkOption { extraSessionCommands = mkOption {
default = ""; default = "";
type = types.lines; type = types.lines;
description = '' description = ''
Shell commands executed just before i3 is started. Shell commands executed just before i3 is started.
''; '';
}; };
package = mkOption {
type = types.package;
default = pkgs.i3;
defaultText = "pkgs.i3";
example = "pkgs.i3-gaps";
description = ''
i3 package to use.
'';
};
}; };
i3config = name: pkg: cfg: { config = mkIf cfg.enable {
services.xserver.windowManager.session = [{ services.xserver.windowManager.session = [{
inherit name; name = "i3";
start = '' start = ''
${cfg.extraSessionCommands} ${cfg.extraSessionCommands}
${pkg}/bin/i3 ${optionalString (cfg.configFile != null) ${cfg.package}/bin/i3 ${optionalString (cfg.configFile != null)
"-c \"${cfg.configFile}\"" "-c \"${cfg.configFile}\""
} & } &
waitPID=$! waitPID=$!
''; '';
}]; }];
environment.systemPackages = [ pkg ]; environment.systemPackages = [ cfg.package ];
}; };
in imports = [
(mkRemovedOptionModule [ "services" "xserver" "windowManager" "i3-gaps" "enable" ]
{ "Use services.xserver.windowManager.i3.enable and set services.xserver.windowManager.i3.package to pkgs.i3-gaps to use i3-gaps.")
options.services.xserver.windowManager = {
i3 = i3option "i3";
i3-gaps = i3option "i3-gaps";
};
config = mkMerge [
(mkIf wmCfg.i3.enable (i3config "i3" pkgs.i3 wmCfg.i3))
(mkIf wmCfg.i3-gaps.enable (i3config "i3-gaps" pkgs.i3-gaps wmCfg.i3-gaps))
]; ];
} }

View File

@ -1,182 +1,408 @@
# This test runs two node kubernetes cluster and checks if simple redis pod works { system ? builtins.currentSystem }:
import ./make-test.nix ({ pkgs, ...} : rec { with import ../lib/testing.nix { inherit system; };
name = "kubernetes"; with import ../lib/qemu-flags.nix;
meta = with pkgs.stdenv.lib.maintainers; { with pkgs.lib;
maintainers = [ offline ];
let
redisPod = pkgs.writeText "redis-master-pod.json" (builtins.toJSON {
kind = "Pod";
apiVersion = "v1";
metadata.name = "redis";
metadata.labels.name = "redis";
spec.containers = [{
name = "redis";
image = "redis";
args = ["--bind" "0.0.0.0"];
imagePullPolicy = "Never";
ports = [{
name = "redis-server";
containerPort = 6379;
}];
}];
});
redisService = pkgs.writeText "redis-service.json" (builtins.toJSON {
kind = "Service";
apiVersion = "v1";
metadata.name = "redis";
spec = {
ports = [{port = 6379; targetPort = 6379;}];
selector = {name = "redis";};
};
});
redisImage = pkgs.dockerTools.buildImage {
name = "redis";
tag = "latest";
contents = pkgs.redis;
config.Entrypoint = "/bin/redis-server";
}; };
redisMaster = builtins.toFile "redis-master-pod.yaml" '' testSimplePod = ''
id: redis-master-pod $kubernetes->execute("docker load < ${redisImage}");
kind: Pod $kubernetes->waitUntilSucceeds("kubectl create -f ${redisPod}");
apiVersion: v1beta1 $kubernetes->succeed("kubectl create -f ${redisService}");
desiredState: $kubernetes->waitUntilSucceeds("kubectl get pod redis | grep Running");
manifest: $kubernetes->succeed("nc -z \$\(dig \@10.10.0.1 redis.default.svc.cluster.local +short\) 6379");
version: v1beta1
id: redis-master-pod
containers:
- name: master
image: master:5000/nix
cpu: 100
ports:
- name: redis-server
containerPort: 6379
hostPort: 6379
volumeMounts:
- name: nix-store
mountPath: /nix/store
readOnly: true
volumeMounts:
- name: system-profile
mountPath: /bin
readOnly: true
command:
- /bin/redis-server
volumes:
- name: nix-store
source:
hostDir:
path: /nix/store
- name: system-profile
source:
hostDir:
path: /run/current-system/sw/bin
labels:
name: redis
role: master
''; '';
in {
# This test runs kubernetes on a single node
trivial = makeTest {
name = "kubernetes-trivial";
nodes = { nodes = {
master = kubernetes =
{ config, pkgs, lib, nodes, ... }: { config, pkgs, lib, nodes, ... }:
{ {
virtualisation.memorySize = 768; virtualisation.memorySize = 768;
services.kubernetes = { virtualisation.diskSize = 2048;
roles = ["master" "node"];
dockerCfg = ''{"master:5000":{}}''; programs.bash.enableCompletion = true;
controllerManager.machines = ["master" "node"];
apiserver.address = "0.0.0.0"; services.kubernetes.roles = ["master" "node"];
verbose = true; virtualisation.docker.extraOptions = "--iptables=false --ip-masq=false -b cbr0";
networking.bridges.cbr0.interfaces = [];
networking.interfaces.cbr0 = {};
}; };
virtualisation.docker.extraOptions = "--iptables=false --ip-masq=false -b cbr0 --insecure-registry master:5000"; };
services.etcd = { testScript = ''
listenPeerUrls = ["http://0.0.0.0:7001"]; startAll;
initialAdvertisePeerUrls = ["http://master:7001"];
initialCluster = ["master=http://master:7001" "node=http://node:7001"];
};
services.dockerRegistry.enable = true;
services.dockerRegistry.host = "0.0.0.0";
services.dockerRegistry.port = 5000;
virtualisation.vlans = [ 1 2 ]; $kubernetes->waitUntilSucceeds("kubectl get nodes | grep kubernetes | grep Ready");
networking.bridges = {
cbr0.interfaces = [ "eth2" ];
};
networking.interfaces = {
cbr0 = {
ipAddress = "10.10.0.1";
prefixLength = 24;
};
eth2.ip4 = lib.mkOverride 0 [ ];
};
networking.localCommands = ''
ip route add 10.10.0.0/16 dev cbr0
ip route flush cache
'';
networking.extraHosts = "127.0.0.1 master";
networking.firewall.enable = false; ${testSimplePod}
#networking.firewall.allowedTCPPorts = [ 4001 7001 ]; '';
environment.systemPackages = [ pkgs.redis ];
};
node =
{ config, pkgs, lib, nodes, ... }:
{
services.kubernetes = {
roles = ["node"];
dockerCfg = ''{"master:5000":{}}'';
kubelet.apiServers = ["master:8080"];
verbose = true;
};
virtualisation.docker.extraOptions = "--iptables=false --ip-masq=false -b cbr0 --insecure-registry master:5000";
services.etcd = {
listenPeerUrls = ["http://0.0.0.0:7001"];
initialAdvertisePeerUrls = ["http://node:7001"];
initialCluster = ["master=http://master:7001" "node=http://node:7001"];
};
virtualisation.vlans = [ 1 2 ];
networking.bridges = {
cbr0.interfaces = [ "eth2" ];
};
networking.interfaces = {
cbr0 = {
ipAddress = "10.10.1.1";
prefixLength = 24;
};
eth2.ip4 = lib.mkOverride 0 [ ];
};
networking.localCommands = ''
ip route add 10.10.0.0/16 dev cbr0
ip route flush cache
'';
networking.extraHosts = "127.0.0.1 node";
networking.firewall.enable = false;
#networking.firewall.allowedTCPPorts = [ 4001 7001 ];
environment.systemPackages = [ pkgs.redis ];
};
client =
{ config, pkgs, nodes, ... }:
{
virtualisation.docker.enable = true;
virtualisation.docker.extraOptions = "--insecure-registry master:5000";
environment.systemPackages = [ pkgs.kubernetes ];
environment.etc."test/redis-master-pod.yaml".source = redisMaster;
environment.etc."test/pause".source = "${pkgs.kubernetes}/bin/kube-pause";
environment.etc."test/Dockerfile".source = pkgs.writeText "Dockerfile" ''
FROM scratch
ADD pause /
ENTRYPOINT ["/pause"]
'';
};
}; };
testScript = '' cluster = let
startAll; runWithOpenSSL = file: cmd: pkgs.runCommand file {
buildInputs = [ pkgs.openssl ];
} cmd;
$master->waitForUnit("kubernetes-apiserver.service"); ca_key = runWithOpenSSL "ca-key.pem" "openssl genrsa -out $out 2048";
$master->waitForUnit("kubernetes-scheduler.service"); ca_pem = runWithOpenSSL "ca.pem" ''
$master->waitForUnit("kubernetes-controller-manager.service"); openssl req \
$master->waitForUnit("kubernetes-kubelet.service"); -x509 -new -nodes -key ${ca_key} \
$master->waitForUnit("kubernetes-proxy.service"); -days 10000 -out $out -subj "/CN=etcd-ca"
'';
etcd_key = runWithOpenSSL "etcd-key.pem" "openssl genrsa -out $out 2048";
etcd_csr = runWithOpenSSL "etcd.csr" ''
openssl req \
-new -key ${etcd_key} \
-out $out -subj "/CN=etcd" \
-config ${openssl_cnf}
'';
etcd_cert = runWithOpenSSL "etcd.pem" ''
openssl x509 \
-req -in ${etcd_csr} \
-CA ${ca_pem} -CAkey ${ca_key} \
-CAcreateserial -out $out \
-days 365 -extensions v3_req \
-extfile ${openssl_cnf}
'';
$node->waitForUnit("kubernetes-kubelet.service"); etcd_client_key = runWithOpenSSL "etcd-client-key.pem"
$node->waitForUnit("kubernetes-proxy.service"); "openssl genrsa -out $out 2048";
$master->waitUntilSucceeds("kubectl get minions | grep master"); etcd_client_csr = runWithOpenSSL "etcd-client-key.pem" ''
$master->waitUntilSucceeds("kubectl get minions | grep node"); openssl req \
-new -key ${etcd_client_key} \
-out $out -subj "/CN=etcd-client" \
-config ${client_openssl_cnf}
'';
$client->waitForUnit("docker.service"); etcd_client_cert = runWithOpenSSL "etcd-client.crt" ''
$client->succeed("tar cv --files-from /dev/null | docker import - nix"); openssl x509 \
$client->succeed("docker tag nix master:5000/nix"); -req -in ${etcd_client_csr} \
$master->waitForUnit("docker-registry.service"); -CA ${ca_pem} -CAkey ${ca_key} -CAcreateserial \
$client->succeed("docker push master:5000/nix"); -out $out -days 365 -extensions v3_req \
$client->succeed("mkdir -p /root/pause"); -extfile ${client_openssl_cnf}
$client->succeed("cp /etc/test/pause /root/pause/"); '';
$client->succeed("cp /etc/test/Dockerfile /root/pause/");
$client->succeed("cd /root/pause && docker build -t master:5000/pause .");
$client->succeed("docker push master:5000/pause");
subtest "simple pod", sub { apiserver_key = runWithOpenSSL "apiserver-key.pem" "openssl genrsa -out $out 2048";
$client->succeed("kubectl create -f ${redisMaster} -s http://master:8080");
$client->waitUntilSucceeds("kubectl get pods -s http://master:8080 | grep redis-master | grep -i running");
}
''; apiserver_csr = runWithOpenSSL "apiserver.csr" ''
}) openssl req \
-new -key ${apiserver_key} \
-out $out -subj "/CN=kube-apiserver" \
-config ${apiserver_cnf}
'';
apiserver_cert = runWithOpenSSL "apiserver.pem" ''
openssl x509 \
-req -in ${apiserver_csr} \
-CA ${ca_pem} -CAkey ${ca_key} -CAcreateserial \
-out $out -days 365 -extensions v3_req \
-extfile ${apiserver_cnf}
'';
worker_key = runWithOpenSSL "worker-key.pem" "openssl genrsa -out $out 2048";
worker_csr = runWithOpenSSL "worker.csr" ''
openssl req \
-new -key ${worker_key} \
-out $out -subj "/CN=kube-worker" \
-config ${worker_cnf}
'';
worker_cert = runWithOpenSSL "worker.pem" ''
openssl x509 \
-req -in ${worker_csr} \
-CA ${ca_pem} -CAkey ${ca_key} -CAcreateserial \
-out $out -days 365 -extensions v3_req \
-extfile ${worker_cnf}
'';
openssl_cnf = pkgs.writeText "openssl.cnf" ''
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = etcd1
DNS.2 = etcd2
DNS.3 = etcd3
IP.1 = 127.0.0.1
'';
client_openssl_cnf = pkgs.writeText "client-openssl.cnf" ''
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = clientAuth
'';
apiserver_cnf = pkgs.writeText "apiserver-openssl.cnf" ''
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = kubernetes
DNS.2 = kubernetes.default
DNS.3 = kubernetes.default.svc
DNS.4 = kubernetes.default.svc.cluster.local
IP.1 = 10.10.10.1
'';
worker_cnf = pkgs.writeText "worker-openssl.cnf" ''
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = kubeWorker1
DNS.2 = kubeWorker2
'';
etcdNodeConfig = {
virtualisation.memorySize = 128;
services = {
etcd = {
enable = true;
keyFile = etcd_key;
certFile = etcd_cert;
trustedCaFile = ca_pem;
peerClientCertAuth = true;
listenClientUrls = ["https://0.0.0.0:2379"];
listenPeerUrls = ["https://0.0.0.0:2380"];
};
};
environment.variables = {
ETCDCTL_CERT_FILE = "${etcd_client_cert}";
ETCDCTL_KEY_FILE = "${etcd_client_key}";
ETCDCTL_CA_FILE = "${ca_pem}";
ETCDCTL_PEERS = "https://127.0.0.1:2379";
};
networking.firewall.allowedTCPPorts = [ 2379 2380 ];
};
kubeConfig = {
virtualisation.diskSize = 2048;
programs.bash.enableCompletion = true;
services.flannel = {
enable = true;
network = "10.10.0.0/16";
iface = "eth1";
etcd = {
endpoints = ["https://etcd1:2379" "https://etcd2:2379" "https://etcd3:2379"];
keyFile = etcd_client_key;
certFile = etcd_client_cert;
caFile = ca_pem;
};
};
# vxlan
networking.firewall.allowedUDPPorts = [ 8472 ];
systemd.services.docker.after = ["flannel.service"];
systemd.services.docker.serviceConfig.EnvironmentFile = "/run/flannel/subnet.env";
virtualisation.docker.extraOptions = "--iptables=false --ip-masq=false --bip $FLANNEL_SUBNET";
services.kubernetes.verbose = true;
services.kubernetes.etcd = {
servers = ["https://etcd1:2379" "https://etcd2:2379" "https://etcd3:2379"];
keyFile = etcd_client_key;
certFile = etcd_client_cert;
caFile = ca_pem;
};
environment.systemPackages = [ pkgs.bind pkgs.tcpdump pkgs.utillinux ];
};
kubeMasterConfig = {pkgs, ...}: {
require = [kubeConfig];
# kube apiserver
networking.firewall.allowedTCPPorts = [ 443 ];
virtualisation.memorySize = 512;
services.kubernetes = {
roles = ["master"];
scheduler.leaderElect = true;
controllerManager.leaderElect = true;
apiserver = {
publicAddress = "0.0.0.0";
advertiseAddress = "192.168.1.8";
tlsKeyFile = apiserver_key;
tlsCertFile = apiserver_cert;
clientCaFile = ca_pem;
kubeletClientCaFile = ca_pem;
kubeletClientKeyFile = worker_key;
kubeletClientCertFile = worker_cert;
};
};
};
kubeWorkerConfig = { pkgs, ... }: {
require = [kubeConfig];
virtualisation.memorySize = 512;
# kubelet
networking.firewall.allowedTCPPorts = [ 10250 ];
services.kubernetes = {
roles = ["node"];
kubeconfig = {
server = "https://kubernetes:443";
caFile = ca_pem;
certFile = worker_cert;
keyFile = worker_key;
};
kubelet = {
tlsKeyFile = worker_key;
tlsCertFile = worker_cert;
};
};
};
in makeTest {
name = "kubernetes-cluster";
nodes = {
etcd1 = { config, pkgs, nodes, ... }: {
require = [etcdNodeConfig];
services.etcd = {
advertiseClientUrls = ["https://etcd1:2379"];
initialCluster = ["etcd1=https://etcd1:2380" "etcd2=https://etcd2:2380" "etcd3=https://etcd3:2380"];
initialAdvertisePeerUrls = ["https://etcd1:2380"];
};
};
etcd2 = { config, pkgs, ... }: {
require = [etcdNodeConfig];
services.etcd = {
advertiseClientUrls = ["https://etcd2:2379"];
initialCluster = ["etcd1=https://etcd1:2380" "etcd2=https://etcd2:2380" "etcd3=https://etcd3:2380"];
initialAdvertisePeerUrls = ["https://etcd2:2380"];
};
};
etcd3 = { config, pkgs, ... }: {
require = [etcdNodeConfig];
services.etcd = {
advertiseClientUrls = ["https://etcd3:2379"];
initialCluster = ["etcd1=https://etcd1:2380" "etcd2=https://etcd2:2380" "etcd3=https://etcd3:2380"];
initialAdvertisePeerUrls = ["https://etcd3:2380"];
};
};
kubeMaster1 = { config, pkgs, lib, nodes, ... }: {
require = [kubeMasterConfig];
};
kubeMaster2 = { config, pkgs, lib, nodes, ... }: {
require = [kubeMasterConfig];
};
# Kubernetes TCP load balancer
kubernetes = { config, pkgs, ... }: {
# kubernetes
networking.firewall.allowedTCPPorts = [ 443 ];
services.haproxy.enable = true;
services.haproxy.config = ''
global
log 127.0.0.1 local0 notice
user haproxy
group haproxy
defaults
log global
retries 2
timeout connect 3000
timeout server 5000
timeout client 5000
listen kubernetes
bind 0.0.0.0:443
mode tcp
option ssl-hello-chk
balance roundrobin
server kube-master-1 kubeMaster1:443 check
server kube-master-2 kubeMaster2:443 check
'';
};
kubeWorker1 = { config, pkgs, lib, nodes, ... }: {
require = [kubeWorkerConfig];
};
kubeWorker2 = { config, pkgs, lib, nodes, ... }: {
require = [kubeWorkerConfig];
};
};
testScript = ''
startAll;
${testSimplePod}
'';
};
}

View File

@ -1,12 +1,12 @@
{ stdenv, fetchurl, pkgconfig, deadbeef, glib }: { stdenv, fetchurl, pkgconfig, deadbeef, glib }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "1.8";
name = "deadbeef-mpris2-plugin-${version}"; name = "deadbeef-mpris2-plugin-${version}";
version = "1.10";
src = fetchurl { src = fetchurl {
url = "https://github.com/Serranya/deadbeef-mpris2-plugin/releases/download/v${version}/${name}.tar.xz"; url = "https://github.com/Serranya/deadbeef-mpris2-plugin/releases/download/v${version}/${name}.tar.xz";
sha256 = "1xg880zlxbqz7hs5g7xwc128l08j8c3isn45rdi138hi4fqbyjfi"; sha256 = "083fbvi06y85khr8hdm4rl5alxdanjbbyphizyr4hi93d7a0jg75";
}; };
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];
@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "MPRISv2 plugin for the DeaDBeeF music player"; description = "MPRISv2 plugin for the DeaDBeeF music player";
homepage = https://github.com/Serranya/deadbeef-mpris2-plugin/; homepage = "https://github.com/Serranya/deadbeef-mpris2-plugin/";
license = licenses.gpl2; license = licenses.gpl2;
platforms = platforms.linux; platforms = platforms.linux;
maintainers = [ maintainers.abbradar ]; maintainers = [ maintainers.abbradar ];

View File

@ -2,14 +2,19 @@
pythonPackages.buildPythonApplication rec { pythonPackages.buildPythonApplication rec {
name = "mopidy-gmusic-${version}"; name = "mopidy-gmusic-${version}";
version = "1.0.0"; version = "2.0.0";
src = fetchurl { src = fetchurl {
url = "https://github.com/mopidy/mopidy-gmusic/archive/v${version}.tar.gz"; url = "https://github.com/mopidy/mopidy-gmusic/archive/v${version}.tar.gz";
sha256 = "0yfilzfamy1bxnmgb1xk56jrk4sz0i7vcnc0a8klrm9sc7agnm9i"; sha256 = "1xryw2aixfza3brxlgjdlg0lghlb17g7kay9zy56mlzp0jr7m87j";
}; };
propagatedBuildInputs = [ mopidy pythonPackages.requests2 pythonPackages.gmusicapi ]; propagatedBuildInputs = [
mopidy
pythonPackages.requests2
pythonPackages.gmusicapi
pythonPackages.cachetools
];
doCheck = false; doCheck = false;

View File

@ -2,12 +2,12 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "svox-${version}"; name = "svox-${version}";
version = "2016-01-25"; version = "2016-10-20";
src = fetchgit { src = fetchgit {
url = "https://android.googlesource.com/platform/external/svox"; url = "https://android.googlesource.com/platform/external/svox";
rev = "dfb9937746b1828d093faf3b1494f9dc403f392d"; rev = "2dd8f16e4436520b93e93aa72b92acad92c0127d";
sha256 = "1gkfj5avikzmr2vv8bhf83n15jcbz4phz5j13l0qnh3gjzh4f1bk"; sha256 = "064h3zb9bn1z6xbv15iy6l4rlxx8fqzy54s898qvafjhz6kawj9g";
}; };
postPatch = '' postPatch = ''

View File

@ -57,7 +57,7 @@ let
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "QML based X11 display manager"; description = "QML based X11 display manager";
homepage = https://github.com/sddm/sddm; homepage = "https://github.com/sddm/sddm";
platforms = platforms.linux; platforms = platforms.linux;
maintainers = with maintainers; [ abbradar ttuegel ]; maintainers = with maintainers; [ abbradar ttuegel ];
}; };

View File

@ -175,10 +175,10 @@
}) {}; }) {};
auctex = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { auctex = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "auctex"; pname = "auctex";
version = "11.89.6"; version = "11.89.7";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/auctex-11.89.6.tar"; url = "https://elpa.gnu.org/packages/auctex-11.89.7.tar";
sha256 = "1lfaki8s9ri6ds88mhpxwqb2jrjf7hbs1w3nxhg307344lac07gy"; sha256 = "03sxdh6dv4m98yq09hxcph2lgidai8ky22i9acjcp6vfjlsb9mlf";
}; };
packageRequires = []; packageRequires = [];
meta = { meta = {
@ -335,10 +335,10 @@
company = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }: company = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
elpaBuild { elpaBuild {
pname = "company"; pname = "company";
version = "0.9.0"; version = "0.9.2";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/company-0.9.0.tar"; url = "https://elpa.gnu.org/packages/company-0.9.2.tar";
sha256 = "1d090j1xv97nbxzz0iq4gmzjijggm8wsd0y1zfsa8syrq8qa0ajs"; sha256 = "10divixs06gq9nm8s8x0q12ir07y27d06l52ix2dn84zvj853z4z";
}; };
packageRequires = [ cl-lib emacs ]; packageRequires = [ cl-lib emacs ];
meta = { meta = {
@ -619,10 +619,10 @@
el-search = callPackage ({ elpaBuild, emacs, fetchurl, lib, stream }: el-search = callPackage ({ elpaBuild, emacs, fetchurl, lib, stream }:
elpaBuild { elpaBuild {
pname = "el-search"; pname = "el-search";
version = "1.0.1"; version = "1.1.2";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/el-search-1.0.1.tar"; url = "https://elpa.gnu.org/packages/el-search-1.1.2.tar";
sha256 = "14l7zq4bm5ihybpj8qvqpzzmgjsyhr8yq2d4jmadk35q5hlx1cbb"; sha256 = "1cav55nx1045c3xasi5d76yyqi68ygp9dpqv9bazrqgcpsmw6y8b";
}; };
packageRequires = [ emacs stream ]; packageRequires = [ emacs stream ];
meta = { meta = {
@ -712,10 +712,10 @@
}) {}; }) {};
exwm = callPackage ({ elpaBuild, fetchurl, lib, xelb }: elpaBuild { exwm = callPackage ({ elpaBuild, fetchurl, lib, xelb }: elpaBuild {
pname = "exwm"; pname = "exwm";
version = "0.11"; version = "0.12";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/exwm-0.11.tar"; url = "https://elpa.gnu.org/packages/exwm-0.12.tar";
sha256 = "108n09b6512y05rskq754hzwc5nzqmkq1lfrarl34my41wsc1qnf"; sha256 = "1h964w9ir8plam45c194af74g5q1wdvgwrldlmlcplcswlsn3n4z";
}; };
packageRequires = [ xelb ]; packageRequires = [ xelb ];
meta = { meta = {
@ -1351,10 +1351,10 @@
}) {}; }) {};
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "org"; pname = "org";
version = "20161102"; version = "20161118";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/org-20161102.tar"; url = "https://elpa.gnu.org/packages/org-20161118.tar";
sha256 = "12v9jhakdxcmlw9zrcrh1fwi3kh6z0qva90hpnr0zjqyj72i0wir"; sha256 = "1w9g8r08kaiw9f4fjsj0hbffzq85rj734j5lxvbaafbnz7dbklk1";
}; };
packageRequires = []; packageRequires = [];
meta = { meta = {
@ -1703,10 +1703,10 @@
}) {}; }) {};
spinner = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { spinner = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "spinner"; pname = "spinner";
version = "1.7.1"; version = "1.7.3";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/spinner-1.7.1.el"; url = "https://elpa.gnu.org/packages/spinner-1.7.3.el";
sha256 = "1fmwzdih0kbyvs8bn38mpm4sbs2mikqy2vdykfy9g20wpa8vb681"; sha256 = "19kp1mmndbmw11sgvv2ggfjl4pyf5zrsbh3871f0965pw9z8vahd";
}; };
packageRequires = []; packageRequires = [];
meta = { meta = {
@ -1901,15 +1901,15 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
validate = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }: validate = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib, seq }:
elpaBuild { elpaBuild {
pname = "validate"; pname = "validate";
version = "1.0.0"; version = "1.0.2";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/validate-1.0.0.el"; url = "https://elpa.gnu.org/packages/validate-1.0.2.el";
sha256 = "10js4qds5xi5a89s4v4fz6f71b25g3x8jm1lcpf9s75i1q1xiysk"; sha256 = "19xhd9mxkdcisspz5q3bnvf6jjsvmhjjrpw3pq5lgyqbcz8k8dsr";
}; };
packageRequires = [ cl-lib emacs ]; packageRequires = [ cl-lib emacs seq ];
meta = { meta = {
homepage = "https://elpa.gnu.org/packages/validate.html"; homepage = "https://elpa.gnu.org/packages/validate.html";
license = lib.licenses.free; license = lib.licenses.free;
@ -2049,10 +2049,10 @@
xelb = callPackage ({ cl-generic, elpaBuild, emacs, fetchurl, lib }: xelb = callPackage ({ cl-generic, elpaBuild, emacs, fetchurl, lib }:
elpaBuild { elpaBuild {
pname = "xelb"; pname = "xelb";
version = "0.11"; version = "0.12";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/xelb-0.11.tar"; url = "https://elpa.gnu.org/packages/xelb-0.12.tar";
sha256 = "12qgbv30dizp7kadq9kg7nfyg5qfbfy14s833zg95fqqa87qg90j"; sha256 = "0i9n0f3ibj4a5pwcsvwrah9m0fz32m0x6a9wsmjn3li20v8pcb81";
}; };
packageRequires = [ cl-generic emacs ]; packageRequires = [ cl-generic emacs ];
meta = { meta = {

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,10 @@
{ callPackage }: { { callPackage }: {
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "org"; pname = "org";
version = "20161102"; version = "20161118";
src = fetchurl { src = fetchurl {
url = "http://orgmode.org/elpa/org-20161102.tar"; url = "http://orgmode.org/elpa/org-20161118.tar";
sha256 = "1mj100pnxskgrfmabj0vdmsijmr7v5ir7c18aypv92nh3fnmiz0f"; sha256 = "1lk2j93zcaamj2m2720nxsza7j35054kg72w35w9z1bbiqmv2haj";
}; };
packageRequires = []; packageRequires = [];
meta = { meta = {
@ -14,10 +14,10 @@
}) {}; }) {};
org-plus-contrib = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { org-plus-contrib = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "org-plus-contrib"; pname = "org-plus-contrib";
version = "20161102"; version = "20161118";
src = fetchurl { src = fetchurl {
url = "http://orgmode.org/elpa/org-plus-contrib-20161102.tar"; url = "http://orgmode.org/elpa/org-plus-contrib-20161118.tar";
sha256 = "124rizp50jaqshcmrr7x2132x5sy7q81nfb37482j9wzrc9l7b95"; sha256 = "1la8qw18akqc4p7p0qi675xm3r149vwazzjc2gkik97p12ip83z7";
}; };
packageRequires = []; packageRequires = [];
meta = { meta = {

View File

@ -120,12 +120,12 @@ in
{ {
clion = buildClion rec { clion = buildClion rec {
name = "clion-${version}"; name = "clion-${version}";
version = "2016.2.3"; version = "2016.3";
description = "C/C++ IDE. New. Intelligent. Cross-platform"; description = "C/C++ IDE. New. Intelligent. Cross-platform";
license = stdenv.lib.licenses.unfree; license = stdenv.lib.licenses.unfree;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz"; url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
sha256 = "1gcglxmffq815r97wyy2wx1jsv467qyys8c0m5dv3yjdxknccbqd"; sha256 = "16nszamr0bxg8aghyrg4wzxbp9158kjzhr957ljpbipz0rlixf31";
}; };
wmClass = "jetbrains-clion"; wmClass = "jetbrains-clion";
}; };
@ -240,36 +240,36 @@ in
pycharm-community = buildPycharm rec { pycharm-community = buildPycharm rec {
name = "pycharm-community-${version}"; name = "pycharm-community-${version}";
version = "2016.2.3"; version = "2016.3";
description = "PyCharm Community Edition"; description = "PyCharm Community Edition";
license = stdenv.lib.licenses.asl20; license = stdenv.lib.licenses.asl20;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/python/${name}.tar.gz"; url = "https://download.jetbrains.com/python/${name}.tar.gz";
sha256 = "0nph0dp0a2y6vrbc1a2d5iy1fzhm4wbkp6kpdk6mcfpnz5ppz84f"; sha256 = "1pi822ihzy58jszdy7y2pyni6pki9ih8s9xdbwlbwg9vck1iqprs";
}; };
wmClass = "jetbrains-pycharm-ce"; wmClass = "jetbrains-pycharm-ce";
}; };
pycharm-professional = buildPycharm rec { pycharm-professional = buildPycharm rec {
name = "pycharm-professional-${version}"; name = "pycharm-professional-${version}";
version = "2016.2.3"; version = "2016.3";
description = "PyCharm Professional Edition"; description = "PyCharm Professional Edition";
license = stdenv.lib.licenses.unfree; license = stdenv.lib.licenses.unfree;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/python/${name}.tar.gz"; url = "https://download.jetbrains.com/python/${name}.tar.gz";
sha256 = "0pjgdwpkbf6fgrhml97inmsjavz1n9l4ns1pnhv3mssnribg3vm1"; sha256 = "1b4ib77wzg0y12si8zqrfwbhv4kvmy9nm5dsrdr3k7f89dqg3279";
}; };
wmClass = "jetbrains-pycharm"; wmClass = "jetbrains-pycharm";
}; };
phpstorm = buildPhpStorm rec { phpstorm = buildPhpStorm rec {
name = "phpstorm-${version}"; name = "phpstorm-${version}";
version = "2016.2.2"; version = "2016.3";
description = "Professional IDE for Web and PHP developers"; description = "Professional IDE for Web and PHP developers";
license = stdenv.lib.licenses.unfree; license = stdenv.lib.licenses.unfree;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz"; url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
sha256 = "0np0ypqga1xx9zq0qwpxiw9xdkr7k0jcdv1w790aafjar7a5qbyz"; sha256 = "0hzjhwij2x3b5fqwyd69h24ld13bpc2bf9wdcd1jy758waf0d91y";
}; };
wmClass = "jetbrains-phpstorm"; wmClass = "jetbrains-phpstorm";
}; };
@ -288,12 +288,12 @@ in
webstorm = buildWebStorm rec { webstorm = buildWebStorm rec {
name = "webstorm-${version}"; name = "webstorm-${version}";
version = "2016.3"; version = "2016.3.1";
description = "Professional IDE for Web and JavaScript development"; description = "Professional IDE for Web and JavaScript development";
license = stdenv.lib.licenses.unfree; license = stdenv.lib.licenses.unfree;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz"; url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
sha256 = "12jv8x7rq0cpvrbrb2l2x1p7is8511fx6ia79z5v3fnwxf17i3w5"; sha256 = "10za4d6w9yns7kclbviizslq2y7zas9rkmvs3xwrfw1rdw2b69af";
}; };
wmClass = "jetbrains-webstorm"; wmClass = "jetbrains-webstorm";
}; };

View File

@ -15,15 +15,15 @@ stdenv.mkDerivation {
patches = [ patches = [
./disable-popen.patch ./disable-popen.patch
(fetchpatch { (fetchpatch {
url = "https://sources.debian.net/data/main/g/graphicsmagick/1.3.25-4/debian/patches/CVE-2016-7996_CVE-2016-7997.patch"; url = "https://sources.debian.net/data/main/g/graphicsmagick/1.3.25-5/debian/patches/CVE-2016-7996_CVE-2016-7997.patch";
sha256 = "0xsby2z8n7cnnln7szjznq7iaabq323wymvdjra59yb41aix74r2"; sha256 = "0xsby2z8n7cnnln7szjznq7iaabq323wymvdjra59yb41aix74r2";
}) })
(fetchpatch { (fetchpatch {
url = "https://sources.debian.net/data/main/g/graphicsmagick/1.3.25-4/debian/patches/CVE-2016-7800_part1.patch"; url = "https://sources.debian.net/data/main/g/graphicsmagick/1.3.25-5/debian/patches/CVE-2016-7800_part1.patch";
sha256 = "02s0x9bkbnm5wrd0d2x9ld4d9z5xqpfk310lyylyr5zlnhqxmwgn"; sha256 = "02s0x9bkbnm5wrd0d2x9ld4d9z5xqpfk310lyylyr5zlnhqxmwgn";
}) })
(fetchpatch { (fetchpatch {
url = "https://sources.debian.net/data/main/g/graphicsmagick/1.3.25-4/debian/patches/CVE-2016-7800_part2.patch"; url = "https://sources.debian.net/data/main/g/graphicsmagick/1.3.25-5/debian/patches/CVE-2016-7800_part2.patch";
sha256 = "1h4xv3i1aq5avsd584rwa5sa7ca8f7w9ggmh7j2llqq5kymwsv5f"; sha256 = "1h4xv3i1aq5avsd584rwa5sa7ca8f7w9ggmh7j2llqq5kymwsv5f";
}) })
(fetchpatch { (fetchpatch {

View File

@ -1,4 +1,4 @@
{ stdenv, lib, fetchgit, cmake, extra-cmake-modules, makeQtWrapper { stdenv, lib, fetchurl, cmake, extra-cmake-modules, makeQtWrapper
, karchive, kconfig, kwidgetsaddons, kcompletion, kcoreaddons , karchive, kconfig, kwidgetsaddons, kcompletion, kcoreaddons
, kguiaddons, ki18n, kitemmodels, kitemviews, kwindowsystem , kguiaddons, ki18n, kitemmodels, kitemviews, kwindowsystem
, kio, kcrash , kio, kcrash
@ -8,12 +8,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "krita-${version}"; name = "krita-${version}";
version = "3.0"; version = "3.0.1.1";
src = fetchgit { src = fetchurl {
url = "http://phabricator.kde.org/diffusion/KRITA/krita.git"; url = "http://download.kde.org/stable/krita/${version}/${name}.tar.gz";
rev = "refs/tags/v${version}"; sha256 = "0v58p9am2gsrgn5nhynvdg1a7v8d9kcsswb1962r8ijszm3fav5k";
sha256 = "0aas86667ncp8jz00c8qk7bm26g76l65cysh06wxr8kxbvqynrdn";
}; };
nativeBuildInputs = [ cmake extra-cmake-modules makeQtWrapper ]; nativeBuildInputs = [ cmake extra-cmake-modules makeQtWrapper ];

View File

@ -2,12 +2,12 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "yEd-${version}"; name = "yEd-${version}";
version = "3.16.1"; version = "3.16.2.1";
src = requireFile { src = requireFile {
name = "${name}.zip"; name = "${name}.zip";
url = "https://www.yworks.com/en/products/yfiles/yed/"; url = "https://www.yworks.com/en/products/yfiles/yed/";
sha256 = "0h7ykcpvsikjfap51hpcz6z814riiwyps585j2i1yv9dmsbqdi7j"; sha256 = "019qfmdifqsrc9h4g3zbn7ivdc0dzlp3isa5ixdkgdhfsdm79b27";
}; };
nativeBuildInputs = [ unzip makeWrapper ]; nativeBuildInputs = [ unzip makeWrapper ];
@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; { meta = with stdenv.lib; {
license = licenses.unfree; license = licenses.unfree;
homepage = http://www.yworks.com/en/products/yfiles/yed/; homepage = "http://www.yworks.com/en/products/yfiles/yed/";
description = "A powerful desktop application that can be used to quickly and effectively generate high-quality diagrams"; description = "A powerful desktop application that can be used to quickly and effectively generate high-quality diagrams";
platforms = jre.meta.platforms; platforms = jre.meta.platforms;
maintainers = with maintainers; [ abbradar ]; maintainers = with maintainers; [ abbradar ];

View File

@ -23,11 +23,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "gnuradio-${version}"; name = "gnuradio-${version}";
version = "3.7.9.2"; version = "3.7.10.1";
src = fetchurl { src = fetchurl {
url = "http://gnuradio.org/releases/gnuradio/${name}.tar.gz"; url = "http://gnuradio.org/releases/gnuradio/${name}.tar.gz";
sha256 = "0qdmakvgq3jxnnqpcn3k4q07vj8ycrbyzv32h76k71cv13w2yrki"; sha256 = "0ds9mcw8hgm03f82jvp3j4mm02ha6zvsl77lp13jzqmbqifbdmv3";
}; };
buildInputs = [ buildInputs = [

View File

@ -16,11 +16,11 @@ let
sockjs-tornado = pythonPackages.buildPythonPackage rec { sockjs-tornado = pythonPackages.buildPythonPackage rec {
name = "sockjs-tornado-${version}"; name = "sockjs-tornado-${version}";
version = "1.0.2"; version = "1.0.3";
src = fetchurl { src = fetchurl {
url = "mirror://pypi/s/sockjs-tornado/${name}.tar.gz"; url = "mirror://pypi/s/sockjs-tornado/${name}.tar.gz";
sha256 = "15lcy40h2cm0l8aknbrk48p2sni5wzybsqjx1hxwpk9lfa1xryyv"; sha256 = "16cff40nniqsyvda1pb2j3b4zwmrw7y2g1vqq78lp20xpmhnwwkd";
}; };
# This is needed for compatibility with OctoPrint # This is needed for compatibility with OctoPrint
@ -28,7 +28,7 @@ let
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "SockJS python server implementation on top of Tornado framework"; description = "SockJS python server implementation on top of Tornado framework";
homepage = http://github.com/mrjoes/sockjs-tornado/; homepage = "http://github.com/mrjoes/sockjs-tornado/";
license = licenses.mit; license = licenses.mit;
platforms = platforms.all; platforms = platforms.all;
maintainers = with maintainers; [ abbradar ]; maintainers = with maintainers; [ abbradar ];
@ -37,13 +37,13 @@ let
in pythonPackages.buildPythonApplication rec { in pythonPackages.buildPythonApplication rec {
name = "OctoPrint-${version}"; name = "OctoPrint-${version}";
version = "1.2.15"; version = "1.2.17";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "foosel"; owner = "foosel";
repo = "OctoPrint"; repo = "OctoPrint";
rev = version; rev = version;
sha256 = "0qfragp7n8m7l5l30s5fz1x7xzini2sdh2y3m1ahs7ay8zp4xk56"; sha256 = "1di2f5npwsfckx5p2fl23bl5zi75i0aksd9qy4sa3zmw672337fh";
}; };
# We need old Tornado # We need old Tornado
@ -67,6 +67,7 @@ in pythonPackages.buildPythonApplication rec {
-e 's,Flask-Principal>=[^"]*,Flask-Principal,g' \ -e 's,Flask-Principal>=[^"]*,Flask-Principal,g' \
-e 's,markdown>=[^"]*,markdown,g' \ -e 's,markdown>=[^"]*,markdown,g' \
-e 's,Flask-Assets>=[^"]*,Flask-Assets,g' \ -e 's,Flask-Assets>=[^"]*,Flask-Assets,g' \
-e 's,Flask-Login>=[^"]*,Flask-Login,g' \
-e 's,rsa>=[^"]*,rsa,g' \ -e 's,rsa>=[^"]*,rsa,g' \
-e 's,PyYAML>=[^"]*,PyYAML,g' \ -e 's,PyYAML>=[^"]*,PyYAML,g' \
setup.py setup.py

View File

@ -1,18 +1,18 @@
From 62b4fabd1d4ee7a584a565d48c7eaec6e80fe0bd Mon Sep 17 00:00:00 2001 From c84b2130dab0d26be35294d023ed8f4be404c3c1 Mon Sep 17 00:00:00 2001
From: Nikolay Amiantov <ab@fmap.me> From: Nikolay Amiantov <ab@fmap.me>
Date: Fri, 12 Aug 2016 23:41:22 +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 | 66 +----------------------------------------- octoprint_m33fio/__init__.py | 67 ++----------------------------------------
shared library source/Makefile | 59 +++---------------------------------- shared library source/Makefile | 62 +++-----------------------------------
2 files changed, 5 insertions(+), 120 deletions(-) 2 files changed, 6 insertions(+), 123 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 da539f5..b0a17ad 100755 index f9f84c4..b365024 100755
--- a/octoprint_m33fio/__init__.py --- a/octoprint_m33fio/__init__.py
+++ b/octoprint_m33fio/__init__.py +++ b/octoprint_m33fio/__init__.py
@@ -979,71 +979,7 @@ class M33FioPlugin( @@ -1061,71 +1061,8 @@ 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 :
@ -81,19 +81,20 @@ index da539f5..b0a17ad 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")
+ self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace('\\', '/') + "/static/libraries/libpreprocessor.so") + # Set shared library
+ self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace('\\', '/') + "/static/libraries/libpreprocessor.so")
# 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 a43d657..0b254aa 100755 index 887899b..4c74f5c 100755
--- a/shared library source/Makefile --- a/shared library source/Makefile
+++ b/shared library source/Makefile +++ b/shared library source/Makefile
@@ -1,62 +1,11 @@ @@ -1,68 +1,14 @@
# Target platform options: LINUX32, LINUX64, WINDOWS32, WINDOWS64, PI, PI2, ARM7, OSX32, OSX64 -# Target platform options: LINUX32, LINUX64, WINDOWS32, WINDOWS64, PI, PI2, ARM7, OSX32, OSX64
-LIBRARY_NAME = preprocessor -LIBRARY_NAME = preprocessor
-TARGET_PLATFORM = LINUX64
+LIBRARY_NAME = libpreprocessor +LIBRARY_NAME = libpreprocessor
TARGET_PLATFORM = LINUX64
VER = .1 VER = .1
-ifeq ($(TARGET_PLATFORM), LINUX32) -ifeq ($(TARGET_PLATFORM), LINUX32)
@ -122,19 +123,19 @@ index a43d657..0b254aa 100755
- -
-ifeq ($(TARGET_PLATFORM), PI) -ifeq ($(TARGET_PLATFORM), PI)
- PROG = $(LIBRARY_NAME)_arm1176jzf-s.so - PROG = $(LIBRARY_NAME)_arm1176jzf-s.so
- CC = ~/tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ - CC = /opt/arm-toolchain/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
- CFLAGS = -fPIC -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++ - CFLAGS = -fPIC -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++
-endif -endif
- -
-ifeq ($(TARGET_PLATFORM), PI2) -ifeq ($(TARGET_PLATFORM), PI2)
- PROG = $(LIBRARY_NAME)_arm_cortex-a7.so - PROG = $(LIBRARY_NAME)_arm_cortex-a7.so
- CC = ~/tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ - CC = /opt/arm-toolchain/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
- CFLAGS = -fPIC -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++ - CFLAGS = -fPIC -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++
-endif -endif
- -
-ifeq ($(TARGET_PLATFORM), ARM7) -ifeq ($(TARGET_PLATFORM), ARM7)
- PROG = $(LIBRARY_NAME)_arm7.so - PROG = $(LIBRARY_NAME)_arm7.so
- CC = ~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ - CC = /opt/arm-toolchain/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++
- CFLAGS = -fPIC -mcpu=generic-armv7-a -mfpu=vfp -mfloat-abi=hard -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++ - CFLAGS = -fPIC -mcpu=generic-armv7-a -mfpu=vfp -mfloat-abi=hard -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++
-endif -endif
- -
@ -151,11 +152,17 @@ index a43d657..0b254aa 100755
- CFLAGS = -fPIC -m64 -stdlib=libc++ -O3 -Wl,-install_name,$(PROG)$(VER) - CFLAGS = -fPIC -m64 -stdlib=libc++ -O3 -Wl,-install_name,$(PROG)$(VER)
-endif -endif
+PROG = $(LIBRARY_NAME).so +PROG = $(LIBRARY_NAME).so
+CC = g++
+CFLAGS = -fPIC -O3 -Wl,-soname,$(PROG)$(VER) +CFLAGS = -fPIC -O3 -Wl,-soname,$(PROG)$(VER)
SRCS = preprocessor.cpp gcode.cpp vector.cpp SRCS = preprocessor.cpp gcode.cpp vector.cpp
CFLAGS += -Wall -std=c++11 -fvisibility=hidden -shared CFLAGS += -Wall -std=c++11 -fvisibility=hidden -shared
all:
- $(CC) $(CFLAGS) -o ../octoprint_m33fio/static/libraries/$(PROG) $(SRCS)
+ $(CXX) $(CFLAGS) -o ../octoprint_m33fio/static/libraries/$(PROG) $(SRCS)
clean:
rm -f ../octoprint_m33fio/static/libraries/$(PROG)
-- --
2.9.2 2.10.2

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.7"; version = "1.11";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "donovan6000"; owner = "donovan6000";
repo = "M33-Fio"; repo = "M33-Fio";
rev = "V${version}"; rev = "V${version}";
sha256 = "14sqvgrpf3zvgycjj7f3m7m2flx06zq4h0yhq4g18av0zbsrv7yp"; sha256 = "11nbsi93clrqlnmaj73ak87hkqyghybccqz5jzhn2dhp0263adhl";
}; };
patches = [ patches = [

View File

@ -1,13 +1,13 @@
{ stdenv, fetchFromGitHub, perl }: { stdenv, fetchFromGitHub, perl }:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "urxvt-tabbedex-2016-08-09"; name = "urxvt-tabbedex-2016-08-17";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "mina86"; owner = "mina86";
repo = "urxvt-tabbedex"; repo = "urxvt-tabbedex";
rev = "ac220eb3984e151ba14dce08f446bc7bc8ca29a2"; rev = "089d0cb724eeb62fa8a5dfcb00ced7761e794149";
sha256 = "1b5mff5137jb5ysklsmfp5ql3m4g1z3bdhk0nwhz2hgwz40ap6k8"; sha256 = "0a5jrb7ryafj55fgi8fhpy3gmb1xh5j7pbn8p5j5k6s2fnh0g0hq";
}; };
nativeBuildInputs = [ perl ]; nativeBuildInputs = [ perl ];

View File

@ -7,11 +7,11 @@
let let
pdfjs = stdenv.mkDerivation rec { pdfjs = stdenv.mkDerivation rec {
name = "pdfjs-${version}"; name = "pdfjs-${version}";
version = "1.4.20"; version = "1.5.188";
src = fetchurl { src = fetchurl {
url = "https://github.com/mozilla/pdf.js/releases/download/v${version}/${name}-dist.zip"; url = "https://github.com/mozilla/pdf.js/releases/download/v${version}/${name}-dist.zip";
sha256 = "1ca1fzyc5qnan6gavcd8bnfqriqqvgdsf4m8ka4nayf50k64xxj9"; sha256 = "1y3yaqfgjj96qzvbm5200x68j5hy1qs7l2mqm3kbbj2b58z9f1qv";
}; };
nativeBuildInputs = [ unzip ]; nativeBuildInputs = [ unzip ];

View File

@ -10,16 +10,16 @@
}: }:
let let
version = "1.4"; version = "1.5";
build = "589.38-1"; build = "658.44-1";
fullVersion = "stable_${version}.${build}"; fullVersion = "stable_${version}.${build}";
info = if stdenv.is64bit then { info = if stdenv.is64bit then {
arch = "amd64"; arch = "amd64";
sha256 = "08qdpl5dkb2snpqlk3rsqlyl9rfas9v6bbcw2p4kzazhinak5hv3"; sha256 = "02zb9pw8h7gm0hlhk95bn8fz14x68ax2jz8g7bgzppyryq8xlg6l";
} else { } else {
arch = "i386"; arch = "i386";
sha256 = "0wpaglc1aaam5bqxgvf5zwcbr0xll8yj63l19q792l51j1vkv56q"; sha256 = "1cwpmdsv4rrr13d1x017rms7cjp5zh3vpz3b44ar49ip6zj6j0a8";
}; };
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {

View File

@ -1,4 +1,4 @@
{ stdenv, fetchgit, fetchpatch { stdenv, fetchFromGitHub, fetchpatch
, ncurses, boehmgc, gettext, zlib , ncurses, boehmgc, gettext, zlib
, sslSupport ? true, openssl ? null , sslSupport ? true, openssl ? null
, graphicsSupport ? true, imlib2 ? null , graphicsSupport ? true, imlib2 ? null
@ -15,12 +15,13 @@ assert mouseSupport -> gpm-ncurses != null;
with stdenv.lib; with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "w3m-0.5.3-2015-12-20"; name = "w3m-v0.5.3+git20161120";
src = fetchgit { src = fetchFromGitHub {
url = "git://anonscm.debian.org/collab-maint/w3m.git"; owner = "tats";
rev = "e0b6e022810271bd0efcd655006389ee3879e94d"; repo = "w3m";
sha256 = "1vahm3719hb0m20nc8k88165z35f8b15qasa0whhk78r12bls1q6"; rev = "v0.5.3+git20161120";
sha256 = "06n5a9jdyihkd4xdjmyci32dpqp1k2l5awia5g9ng0bn256bacdc";
}; };
NIX_LDFLAGS = optionalString stdenv.isSunOS "-lsocket -lnsl"; NIX_LDFLAGS = optionalString stdenv.isSunOS "-lsocket -lnsl";

View File

@ -0,0 +1,36 @@
{ stdenv, fetchFromGitHub, go }:
stdenv.mkDerivation rec {
name = "cni-${version}";
version = "0.3.0";
src = fetchFromGitHub {
owner = "containernetworking";
repo = "cni";
rev = "v${version}";
sha256 = "1nvixvf5slnsdrfpfs2km64x680wf83jbyp7il12bcim37q2az7m";
};
buildInputs = [ go ];
outputs = ["out" "plugins"];
buildPhase = ''
patchShebangs build
./build
'';
installPhase = ''
mkdir -p $out/bin $plugins
mv bin/cnitool $out/bin
mv bin/* $plugins/
'';
meta = with stdenv.lib; {
description = "Container Network Interface - networking for Linux containers";
license = licenses.asl20;
homepage = https://github.com/containernetworking/cni;
maintainers = with maintainers; [offline];
platforms = [ "x86_64-linux" ];
};
}

View File

@ -48,9 +48,6 @@ stdenv.mkDerivation rec {
''; '';
preFixup = '' preFixup = ''
wrapProgram "$out/bin/kube-proxy" --prefix PATH : "${iptables}/bin"
wrapProgram "$out/bin/kubelet" --prefix PATH : "${coreutils}/bin"
# Remove references to go compiler # Remove references to go compiler
while read file; do while read file; do
cat $file | sed "s,${go},$(echo "${go}" | sed "s,$NIX_STORE/[^-]*,$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee,"),g" > $file.tmp cat $file | sed "s,${go},$(echo "${go}" | sed "s,$NIX_STORE/[^-]*,$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee,"),g" > $file.tmp

View File

@ -2,6 +2,7 @@
, automake115x, libtool, unzip, gnutar, jdk, maven, python, wrapPython , automake115x, libtool, unzip, gnutar, jdk, maven, 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
, bash , bash
}: }:
@ -10,7 +11,7 @@ let
soext = if stdenv.system == "x86_64-darwin" then "dylib" else "so"; soext = if stdenv.system == "x86_64-darwin" then "dylib" else "so";
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
version = "0.28.2"; version = "1.0.1";
name = "mesos-${version}"; name = "mesos-${version}";
enableParallelBuilding = true; enableParallelBuilding = true;
@ -18,7 +19,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 = "0wh4h11w5qvqa66fiz0qbm9q48d3jz48mw6mm22bcy9q9wmzrxcn"; sha256 = "1hdh2wh11ck98ycfrxfzgivgk2pjl3638vkyw14xj7faj9qxjlz0";
}; };
patches = [ patches = [
@ -29,7 +30,8 @@ in stdenv.mkDerivation rec {
./rb51324.patch ./rb51324.patch
./rb51325.patch ./rb51325.patch
./maven_repo.patch # see https://github.com/cstrahan/mesos/tree/nixos-${version}
./nixos.patch
]; ];
buildInputs = [ buildInputs = [
@ -45,59 +47,59 @@ in stdenv.mkDerivation rec {
]; ];
preConfigure = '' preConfigure = ''
substituteInPlace src/Makefile.am --subst-var-by mavenRepo ${mavenRepo} substituteInPlace 3rdparty/stout/include/stout/os/posix/fork.hpp \
--subst-var-by sh ${bash}/bin/bash
substituteInPlace 3rdparty/libprocess/include/process/subprocess.hpp \ substituteInPlace 3rdparty/stout/include/stout/os/posix/shell.hpp \
--replace '"sh"' '"${bash}/bin/bash"' --subst-var-by sh ${bash}/bin/bash
substituteInPlace 3rdparty/libprocess/3rdparty/stout/include/stout/posix/os.hpp \ substituteInPlace src/Makefile.am \
--replace '"sh"' '"${bash}/bin/bash"' --subst-var-by mavenRepo ${mavenRepo}
substituteInPlace 3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/shell.hpp \ substituteInPlace src/cli/mesos-scp \
--replace '"sh"' '"${bash}/bin/bash"' --subst-var-by scp ${openssh}/bin/scp
substituteInPlace 3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/fork.hpp \
--replace '"sh"' '"${bash}/bin/bash"'
substituteInPlace src/cli/mesos-scp \
--replace "'scp " "'${openssh}/bin/scp "
substituteInPlace src/launcher/executor.cpp \
--replace '"sh"' '"${bash}/bin/bash"'
substituteInPlace src/launcher/fetcher.cpp \ substituteInPlace src/launcher/fetcher.cpp \
--replace '"gzip' '"${gzip}/bin/gzip' \ --subst-var-by gzip ${gzip}/bin/gzip \
--replace '"tar' '"${gnutar}/bin/tar' \ --subst-var-by tar ${gnutar}/bin/tar \
--replace '"unzip' '"${unzip}/bin/unzip' --subst-var-by unzip ${unzip}/bin/unzip
substituteInPlace src/python/cli/src/mesos/cli.py \ substituteInPlace src/python/cli/src/mesos/cli.py \
--replace "['mesos-resolve'" "['$out/bin/mesos-resolve'" --subst-var-by mesos-resolve $out/bin/mesos-resolve
substituteInPlace src/slave/containerizer/mesos/launch.cpp \ substituteInPlace src/slave/containerizer/mesos/isolators/posix/disk.cpp \
--replace '"sh"' '"${bash}/bin/bash"' --subst-var-by du ${coreutils}/bin/du \
--subst-var-by cp ${coreutils}/bin/cp
substituteInPlace src/slave/containerizer/mesos/provisioner/backends/copy.cpp \
--subst-var-by cp ${coreutils}/bin/cp
substituteInPlace src/uri/fetchers/copy.cpp \
--subst-var-by cp ${coreutils}/bin/cp
substituteInPlace src/uri/fetchers/curl.cpp \
--subst-var-by curl ${curl}/bin/curl
substituteInPlace src/uri/fetchers/docker.cpp \
--subst-var-by curl ${curl}/bin/curl
'' + lib.optionalString stdenv.isLinux '' '' + lib.optionalString stdenv.isLinux ''
substituteInPlace configure.ac \ substituteInPlace src/linux/perf.cpp \
--replace /usr/include/libnl3 ${libnl.dev}/include/libnl3 --subst-var-by perf ${perf}/bin/perf
substituteInPlace src/linux/perf.cpp \
--replace '"perf ' '"${perf}/bin/perf '
substituteInPlace src/linux/systemd.cpp \
--replace 'os::realpath("/sbin/init")' '"${systemd}/lib/systemd/systemd"'
substituteInPlace src/slave/containerizer/mesos/isolators/filesystem/shared.cpp \ substituteInPlace src/slave/containerizer/mesos/isolators/filesystem/shared.cpp \
--replace '"mount ' '"${utillinux}/bin/mount ' \ --subst-var-by mount ${utillinux}/bin/mount
substituteInPlace src/slave/containerizer/mesos/isolators/namespaces/pid.cpp \ substituteInPlace src/slave/containerizer/mesos/isolators/namespaces/pid.cpp \
--replace '"mount ' '"${utillinux}/bin/mount ' \ --subst-var-by mount ${utillinux}/bin/mount
substituteInPlace src/slave/containerizer/mesos/isolators/network/port_mapping.cpp \ substituteInPlace src/slave/containerizer/mesos/isolators/network/port_mapping.cpp \
--replace '"tc ' '"${iproute}/bin/tc ' \ --subst-var-by tc ${iproute}/bin/tc \
--replace '"ip ' '"${iproute}/bin/ip ' \ --subst-var-by ip ${iproute}/bin/ip \
--replace '"mount ' '"${utillinux}/bin/mount ' \ --subst-var-by mount ${utillinux}/bin/mount \
--replace '/bin/sh' "${stdenv.shell}" --subst-var-by sh ${stdenv.shell} \
--subst-var-by ethtool ${ethtool}/sbin/ethtool
''; '';
configureFlags = [ configureFlags = [
@ -113,8 +115,11 @@ in stdenv.mkDerivation rec {
"--with-ssl=${openssl.dev}" "--with-ssl=${openssl.dev}"
"--enable-libevent" "--enable-libevent"
"--with-libevent=${libevent.dev}" "--with-libevent=${libevent.dev}"
"--with-protobuf=${pythonProtobuf.protobuf}"
"PROTOBUF_JAR=${mavenRepo}/com/google/protobuf/protobuf-java/2.6.1/protobuf-java-2.6.1.jar"
] ++ lib.optionals stdenv.isLinux [ ] ++ lib.optionals stdenv.isLinux [
"--with-network-isolator" "--with-network-isolator"
"--with-nl=${libnl.dev}"
]; ];
postInstall = '' postInstall = ''
@ -180,8 +185,5 @@ in stdenv.mkDerivation rec {
description = "A cluster manager that provides efficient resource isolation and sharing across distributed applications, or frameworks"; description = "A cluster manager that provides efficient resource isolation and sharing across distributed applications, or frameworks";
maintainers = with maintainers; [ cstrahan kevincox offline rushmorem ]; maintainers = with maintainers; [ cstrahan kevincox offline rushmorem ];
platforms = platforms.linux; platforms = platforms.linux;
# Marked as broken due to needing an update for security issues.
# See: https://github.com/NixOS/nixpkgs/issues/18856
broken = true;
}; };
} }

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -0,0 +1,463 @@
diff --git a/3rdparty/stout/include/stout/os/posix/fork.hpp b/3rdparty/stout/include/stout/os/posix/fork.hpp
index a29967d..290b98b 100644
--- a/3rdparty/stout/include/stout/os/posix/fork.hpp
+++ b/3rdparty/stout/include/stout/os/posix/fork.hpp
@@ -369,7 +369,7 @@ private:
if (exec.isSome()) {
// Execute the command (via '/bin/sh -c command').
const char* command = exec.get().command.c_str();
- execlp("sh", "sh", "-c", command, (char*) nullptr);
+ execlp("@sh@", "sh", "-c", command, (char*) nullptr);
EXIT(EXIT_FAILURE)
<< "Failed to execute '" << command << "': " << os::strerror(errno);
} else if (wait.isSome()) {
diff --git a/3rdparty/stout/include/stout/os/posix/shell.hpp b/3rdparty/stout/include/stout/os/posix/shell.hpp
index 1d73ae5..9bf89b5 100644
--- a/3rdparty/stout/include/stout/os/posix/shell.hpp
+++ b/3rdparty/stout/include/stout/os/posix/shell.hpp
@@ -37,7 +37,7 @@ namespace Shell {
// received by the callee, usually the command name and `arg1` is the
// second command argument received by the callee.
-constexpr const char* name = "sh";
+constexpr const char* name = "@sh@";
constexpr const char* arg0 = "sh";
constexpr const char* arg1 = "-c";
diff --git a/src/Makefile.am b/src/Makefile.am
index 28dd151..36fc6ec 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1528,7 +1528,8 @@ if HAS_JAVA
$(MESOS_JAR): $(MESOS_JAR_SOURCE) $(MESOS_JAR_GENERATED) java/mesos.pom
@echo "Building mesos-$(PACKAGE_VERSION).jar ..."
- @cd $(abs_top_builddir)/src/java && $(MVN) -B -f mesos.pom clean package
+ @cd $(abs_top_builddir)/src/java && $(MVN) -B -f mesos.pom -Dmaven.repo.local=@mavenRepo@ clean package
+
# Convenience library for JNI bindings.
# TODO(Charles Reiss): We really should be building the Java library
diff --git a/src/cli/mesos-scp b/src/cli/mesos-scp
index a71ab07..feed8c4 100755
--- a/src/cli/mesos-scp
+++ b/src/cli/mesos-scp
@@ -19,7 +19,7 @@ if sys.version_info < (2,6,0):
def scp(host, src, dst):
- cmd = 'scp -pr %s %s' % (src, host + ':' + dst)
+ cmd = '@scp@ -pr %s %s' % (src, host + ':' + dst)
try:
process = subprocess.Popen(
cmd,
diff --git a/src/launcher/fetcher.cpp b/src/launcher/fetcher.cpp
index 4456c28..e22c8fc 100644
--- a/src/launcher/fetcher.cpp
+++ b/src/launcher/fetcher.cpp
@@ -68,13 +68,13 @@ static Try<bool> extract(
strings::endsWith(sourcePath, ".tar.bz2") ||
strings::endsWith(sourcePath, ".txz") ||
strings::endsWith(sourcePath, ".tar.xz")) {
- command = "tar -C '" + destinationDirectory + "' -xf";
+ command = "@tar@ -C '" + destinationDirectory + "' -xf";
} else if (strings::endsWith(sourcePath, ".gz")) {
string pathWithoutExtension = sourcePath.substr(0, sourcePath.length() - 3);
string filename = Path(pathWithoutExtension).basename();
- command = "gzip -dc > '" + destinationDirectory + "/" + filename + "' <";
+ command = "@gzip@ -dc > '" + destinationDirectory + "/" + filename + "' <";
} else if (strings::endsWith(sourcePath, ".zip")) {
- command = "unzip -o -d '" + destinationDirectory + "'";
+ command = "@unzip@ -o -d '" + destinationDirectory + "'";
} else {
return false;
}
@@ -162,7 +162,7 @@ static Try<string> copyFile(
const string& sourcePath,
const string& destinationPath)
{
- const string command = "cp '" + sourcePath + "' '" + destinationPath + "'";
+ const string command = "@cp@ '" + sourcePath + "' '" + destinationPath + "'";
LOG(INFO) << "Copying resource with command:" << command;
diff --git a/src/linux/perf.cpp b/src/linux/perf.cpp
index ea823b3..170f54d 100644
--- a/src/linux/perf.cpp
+++ b/src/linux/perf.cpp
@@ -125,7 +125,7 @@ private:
// NOTE: The watchdog process places perf in its own process group
// and will kill the perf process when the parent dies.
Try<Subprocess> _perf = subprocess(
- "perf",
+ "@perf@",
argv,
Subprocess::PIPE(),
Subprocess::PIPE(),
@@ -319,7 +319,7 @@ bool valid(const set<string>& events)
ostringstream command;
// Log everything to stderr which is then redirected to /dev/null.
- 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 619aa27..c1cbfe4 100644
--- a/src/linux/systemd.cpp
+++ b/src/linux/systemd.cpp
@@ -196,12 +196,19 @@ bool exists()
// This is static as the init system should not change while we are running.
static const bool exists = []() -> bool {
// (1) Test whether `/sbin/init` links to systemd.
- const Result<string> realpath = os::realpath("/sbin/init");
- if (realpath.isError() || realpath.isNone()) {
- LOG(WARNING) << "Failed to test /sbin/init for systemd environment: "
- << realpath.error();
-
- return false;
+ // cstrahan: first assume we're on NixOS, then try non-NixOS
+ Result<string> realpath = os::realpath("/run/current-system/systemd/lib/systemd/systemd");
+ Result<string> realpathNixOS = realpath;
+ if (realpathNixOS.isError() || realpathNixOS.isNone()) {
+ Result<string> realpathNonNixOS = realpath = os::realpath("/sbin/init");
+ if (realpathNonNixOS.isError() || realpathNonNixOS.isNone()) {
+ LOG(WARNING) << "Failed to test /run/current-system/systemd/lib/systemd/systemd for systemd environment: "
+ << realpathNixOS.error();
+ LOG(WARNING) << "Failed to test /sbin/init for systemd environment: "
+ << realpathNonNixOS.error();
+
+ return false;
+ }
}
CHECK_SOME(realpath);
diff --git a/src/python/cli/src/mesos/cli.py b/src/python/cli/src/mesos/cli.py
index f342992..354abf4 100644
--- a/src/python/cli/src/mesos/cli.py
+++ b/src/python/cli/src/mesos/cli.py
@@ -40,7 +40,7 @@ def resolve(master):
import subprocess
process = subprocess.Popen(
- ['mesos-resolve', master],
+ ['@mesos-resolve@', master],
stdin=None,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
diff --git a/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp b/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
index 51d1518..783adb5 100644
--- a/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
+++ b/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
@@ -204,7 +204,7 @@ Future<Option<ContainerLaunchInfo>> SharedFilesystemIsolatorProcess::prepare(
}
launchInfo.add_pre_exec_commands()->set_value(
- "mount -n --bind " + hostPath + " " + volume.container_path());
+ "@mount@ -n --bind " + hostPath + " " + volume.container_path());
}
return launchInfo;
diff --git a/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp b/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
index b41e266..e07c163 100644
--- a/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
+++ b/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
@@ -163,7 +163,7 @@ Future<Option<ContainerLaunchInfo>> NamespacesPidIsolatorProcess::prepare(
// containers cannot see the namespace bind mount of other
// containers.
launchInfo.add_pre_exec_commands()->set_value(
- "mount -n --bind " + string(PID_NS_BIND_MOUNT_MASK_DIR) +
+ "@mount@ -n --bind " + string(PID_NS_BIND_MOUNT_MASK_DIR) +
" " + string(PID_NS_BIND_MOUNT_ROOT));
// Mount /proc for the container's pid namespace to show the
@@ -176,9 +176,9 @@ Future<Option<ContainerLaunchInfo>> NamespacesPidIsolatorProcess::prepare(
// -n flag so the mount is not added to the mtab where it will not
// be correctly removed with the namespace terminates.
launchInfo.add_pre_exec_commands()->set_value(
- "mount none /proc --make-private -o rec");
+ "@mount@ none /proc --make-private -o rec");
launchInfo.add_pre_exec_commands()->set_value(
- "mount -n -t proc proc /proc -o nosuid,noexec,nodev");
+ "@mount@ -n -t proc proc /proc -o nosuid,noexec,nodev");
return launchInfo;
}
diff --git a/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp b/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
index 79ee960..d55a353 100644
--- a/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
+++ b/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
@@ -1392,19 +1392,19 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
// Check the availability of a few Linux commands that we will use.
// We use the blocking os::shell here because 'create' will only be
// invoked during initialization.
- Try<string> checkCommandTc = os::shell("tc filter show");
+ Try<string> checkCommandTc = os::shell("@tc@ filter show");
if (checkCommandTc.isError()) {
return Error("Check command 'tc' failed: " + checkCommandTc.error());
}
// NOTE: loopback device always exists.
- Try<string> checkCommandEthtool = os::shell("ethtool -k lo");
+ Try<string> checkCommandEthtool = os::shell("@ethtool@ -k lo");
if (checkCommandEthtool.isError()) {
return Error("Check command 'ethtool' failed: "
+ checkCommandEthtool.error());
}
- Try<string> checkCommandIp = os::shell("ip link show");
+ Try<string> checkCommandIp = os::shell("@ip@ link show");
if (checkCommandIp.isError()) {
return Error("Check command 'ip' failed: " + checkCommandIp.error());
}
@@ -1924,9 +1924,9 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
// visible. It's OK to use the blocking os::shell here because
// 'create' will only be invoked during initialization.
Try<string> mount = os::shell(
- "mount --bind %s %s && "
- "mount --make-slave %s && "
- "mount --make-shared %s",
+ "@mount@ --bind %s %s && "
+ "@mount@ --make-slave %s && "
+ "@mount@ --make-shared %s",
bindMountRoot->c_str(),
bindMountRoot->c_str(),
bindMountRoot->c_str(),
@@ -1943,8 +1943,8 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
// shared mount yet (possibly due to slave crash while preparing
// the work directory mount). It's safe to re-do the following.
Try<string> mount = os::shell(
- "mount --make-slave %s && "
- "mount --make-shared %s",
+ "@mount@ --make-slave %s && "
+ "@mount@ --make-shared %s",
bindMountRoot->c_str(),
bindMountRoot->c_str());
@@ -1963,8 +1963,8 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
// so that they are in different peer groups.
if (entry.shared() == bindMountEntry->shared()) {
Try<string> mount = os::shell(
- "mount --make-slave %s && "
- "mount --make-shared %s",
+ "@mount@ --make-slave %s && "
+ "@mount@ --make-shared %s",
bindMountRoot->c_str(),
bindMountRoot->c_str());
@@ -3916,13 +3916,13 @@ string PortMappingIsolatorProcess::scripts(Info* info)
{
ostringstream script;
- script << "#!/bin/sh\n";
+ script << "#!@sh@\n";
script << "set -xe\n";
// Mark the mount point PORT_MAPPING_BIND_MOUNT_ROOT() as slave
// mount so that changes in the container will not be propagated to
// the host.
- script << "mount --make-rslave " << bindMountRoot << "\n";
+ script << "@mount@ --make-rslave " << bindMountRoot << "\n";
// Disable IPv6 when IPv6 module is loaded as IPv6 packets won't be
// forwarded anyway.
@@ -3930,7 +3930,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
<< " echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6\n";
// Configure lo and eth0.
- script << "ip link set " << lo << " address " << hostMAC
+ script << "@ip@ link set " << lo << " address " << hostMAC
<< " mtu " << hostEth0MTU << " up\n";
// NOTE: This is mostly a kernel issue: in veth_xmit() the kernel
@@ -3939,12 +3939,12 @@ string PortMappingIsolatorProcess::scripts(Info* info)
// when we receive a packet with a bad checksum. Disabling rx
// checksum offloading ensures the TCP layer will checksum and drop
// it.
- script << "ethtool -K " << eth0 << " rx off\n";
- script << "ip link set " << eth0 << " address " << hostMAC << " up\n";
- script << "ip addr add " << hostIPNetwork << " dev " << eth0 << "\n";
+ script << "@ethtool@ -K " << eth0 << " rx off\n";
+ script << "@ip@ link set " << eth0 << " address " << hostMAC << " up\n";
+ script << "@ip@ addr add " << hostIPNetwork << " dev " << eth0 << "\n";
// Set up the default gateway to match that of eth0.
- script << "ip route add default via " << hostDefaultGateway << "\n";
+ script << "@ip@ route add default via " << hostDefaultGateway << "\n";
// Restrict the ephemeral ports that can be used by the container.
script << "echo " << info->ephemeralPorts.lower() << " "
@@ -3973,19 +3973,19 @@ string PortMappingIsolatorProcess::scripts(Info* info)
}
// Set up filters on lo and eth0.
- script << "tc qdisc add dev " << lo << " ingress\n";
- script << "tc qdisc add dev " << eth0 << " ingress\n";
+ script << "@tc@ qdisc add dev " << lo << " ingress\n";
+ script << "@tc@ qdisc add dev " << eth0 << " ingress\n";
// Allow talking between containers and from container to host.
// TODO(chzhcn): Consider merging the following two filters.
- script << "tc filter add dev " << lo << " parent " << ingress::HANDLE
+ script << "@tc@ filter add dev " << lo << " parent " << ingress::HANDLE
<< " protocol ip"
<< " prio " << Priority(IP_FILTER_PRIORITY, NORMAL).get() << " u32"
<< " flowid ffff:0"
<< " match ip dst " << hostIPNetwork.address()
<< " action mirred egress redirect dev " << eth0 << "\n";
- script << "tc filter add dev " << lo << " parent " << ingress::HANDLE
+ script << "@tc@ filter add dev " << lo << " parent " << ingress::HANDLE
<< " protocol ip"
<< " prio " << Priority(IP_FILTER_PRIORITY, NORMAL).get() << " u32"
<< " flowid ffff:0"
@@ -3996,7 +3996,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
foreach (const PortRange& range,
getPortRanges(info->nonEphemeralPorts + info->ephemeralPorts)) {
// Local traffic inside a container will not be redirected to eth0.
- script << "tc filter add dev " << lo << " parent " << ingress::HANDLE
+ script << "@tc@ filter add dev " << lo << " parent " << ingress::HANDLE
<< " protocol ip"
<< " prio " << Priority(IP_FILTER_PRIORITY, HIGH).get() << " u32"
<< " flowid ffff:0"
@@ -4005,7 +4005,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
// Traffic going to host loopback IP and ports assigned to this
// container will be redirected to lo.
- script << "tc filter add dev " << eth0 << " parent " << ingress::HANDLE
+ script << "@tc@ filter add dev " << eth0 << " parent " << ingress::HANDLE
<< " protocol ip"
<< " prio " << Priority(IP_FILTER_PRIORITY, NORMAL).get() << " u32"
<< " flowid ffff:0"
@@ -4017,14 +4017,14 @@ string PortMappingIsolatorProcess::scripts(Info* info)
}
// Do not forward the ICMP packet if the destination IP is self.
- script << "tc filter add dev " << lo << " parent " << ingress::HANDLE
+ script << "@tc@ filter add dev " << lo << " parent " << ingress::HANDLE
<< " protocol ip"
<< " prio " << Priority(ICMP_FILTER_PRIORITY, NORMAL).get() << " u32"
<< " flowid ffff:0"
<< " match ip protocol 1 0xff"
<< " match ip dst " << hostIPNetwork.address() << "\n";
- script << "tc filter add dev " << lo << " parent " << ingress::HANDLE
+ script << "@tc@ filter add dev " << lo << " parent " << ingress::HANDLE
<< " protocol ip"
<< " prio " << Priority(ICMP_FILTER_PRIORITY, NORMAL).get() << " u32"
<< " flowid ffff:0"
@@ -4033,9 +4033,9 @@ string PortMappingIsolatorProcess::scripts(Info* info)
<< net::IPNetwork::LOOPBACK_V4().address() << "\n";
// Display the filters created on eth0 and lo.
- script << "tc filter show dev " << eth0
+ script << "@tc@ filter show dev " << eth0
<< " parent " << ingress::HANDLE << "\n";
- script << "tc filter show dev " << lo
+ script << "@tc@ filter show dev " << lo
<< " parent " << ingress::HANDLE << "\n";
// If throughput limit for container egress traffic exists, use HTB
@@ -4047,9 +4047,9 @@ string PortMappingIsolatorProcess::scripts(Info* info)
// throughput. TBF requires other parameters such as 'burst' that
// HTB already has default values for.
if (egressRateLimitPerContainer.isSome()) {
- script << "tc qdisc add dev " << eth0 << " root handle "
+ script << "@tc@ qdisc add dev " << eth0 << " root handle "
<< CONTAINER_TX_HTB_HANDLE << " htb default 1\n";
- script << "tc class add dev " << eth0 << " parent "
+ script << "@tc@ class add dev " << eth0 << " parent "
<< CONTAINER_TX_HTB_HANDLE << " classid "
<< CONTAINER_TX_HTB_CLASS_ID << " htb rate "
<< egressRateLimitPerContainer.get().bytes() * 8 << "bit\n";
@@ -4060,12 +4060,12 @@ string PortMappingIsolatorProcess::scripts(Info* info)
// fq_codel, which has a larger buffer and better control on
// buffer bloat.
// TODO(cwang): Verity that fq_codel qdisc is available.
- script << "tc qdisc add dev " << eth0
+ script << "@tC@ qdisc add dev " << eth0
<< " parent " << CONTAINER_TX_HTB_CLASS_ID << " fq_codel\n";
// Display the htb qdisc and class created on eth0.
- script << "tc qdisc show dev " << eth0 << "\n";
- script << "tc class show dev " << eth0 << "\n";
+ script << "@tc@ qdisc show dev " << eth0 << "\n";
+ script << "@tc@ class show dev " << eth0 << "\n";
}
return script.str();
diff --git a/src/slave/containerizer/mesos/isolators/posix/disk.cpp b/src/slave/containerizer/mesos/isolators/posix/disk.cpp
index 3dfe7ad..4288666 100644
--- a/src/slave/containerizer/mesos/isolators/posix/disk.cpp
+++ b/src/slave/containerizer/mesos/isolators/posix/disk.cpp
@@ -492,7 +492,7 @@ private:
// NOTE: The monitor watchdog will watch the parent process and kill
// the 'du' process in case that the parent die.
Try<Subprocess> s = subprocess(
- "du",
+ "@du@",
command,
Subprocess::PATH("/dev/null"),
Subprocess::PIPE(),
diff --git a/src/slave/containerizer/mesos/provisioner/backends/copy.cpp b/src/slave/containerizer/mesos/provisioner/backends/copy.cpp
index b9f6d7a..0fcf455 100644
--- a/src/slave/containerizer/mesos/provisioner/backends/copy.cpp
+++ b/src/slave/containerizer/mesos/provisioner/backends/copy.cpp
@@ -141,7 +141,7 @@ Future<Nothing> CopyBackendProcess::_provision(
#endif // __APPLE__ || __FreeBSD__
Try<Subprocess> s = subprocess(
- "cp",
+ "@cp@",
args,
Subprocess::PATH("/dev/null"),
Subprocess::PATH("/dev/null"),
diff --git a/src/uri/fetchers/copy.cpp b/src/uri/fetchers/copy.cpp
index f095ad6..ee0c2a7 100644
--- a/src/uri/fetchers/copy.cpp
+++ b/src/uri/fetchers/copy.cpp
@@ -88,7 +88,7 @@ Future<Nothing> CopyFetcherPlugin::fetch(
const vector<string> argv = {"cp", "-a", uri.path(), directory};
Try<Subprocess> s = subprocess(
- "cp",
+ "@cp@",
argv,
Subprocess::PATH("/dev/null"),
Subprocess::PIPE(),
diff --git a/src/uri/fetchers/curl.cpp b/src/uri/fetchers/curl.cpp
index cc3f9ee..691d2d9 100644
--- a/src/uri/fetchers/curl.cpp
+++ b/src/uri/fetchers/curl.cpp
@@ -98,7 +98,7 @@ Future<Nothing> CurlFetcherPlugin::fetch(
};
Try<Subprocess> s = subprocess(
- "curl",
+ "@curl@",
argv,
Subprocess::PATH("/dev/null"),
Subprocess::PIPE(),
diff --git a/src/uri/fetchers/docker.cpp b/src/uri/fetchers/docker.cpp
index 211be6f..d7e3771 100644
--- a/src/uri/fetchers/docker.cpp
+++ b/src/uri/fetchers/docker.cpp
@@ -113,7 +113,7 @@ static Future<http::Response> curl(
// TODO(jieyu): Kill the process if discard is called.
Try<Subprocess> s = subprocess(
- "curl",
+ "@curl@",
argv,
Subprocess::PATH("/dev/null"),
Subprocess::PIPE(),
@@ -212,7 +212,7 @@ static Future<int> download(
// TODO(jieyu): Kill the process if discard is called.
Try<Subprocess> s = subprocess(
- "curl",
+ "@curl@",
argv,
Subprocess::PATH("/dev/null"),
Subprocess::PIPE(),

View File

@ -1,17 +1,16 @@
diff --git a/3rdparty/libprocess/3rdparty/stout/include/stout/os/ls.hpp b/3rdparty/libprocess/3rdparty/stout/include/stout/os/ls.hpp diff --git a/3rdparty/stout/include/stout/os/ls.hpp b/3rdparty/stout/include/stout/os/ls.hpp
index f8da9ef74a885cc39424b3e50cebca905d88ca44..25e2bec6415f2382291cf8da5c0a8c44cf882d27 100644 index f8da9ef..6d549d3 100644
--- a/3rdparty/libprocess/3rdparty/stout/include/stout/os/ls.hpp --- a/3rdparty/stout/include/stout/os/ls.hpp
+++ b/3rdparty/libprocess/3rdparty/stout/include/stout/os/ls.hpp +++ b/3rdparty/stout/include/stout/os/ls.hpp
@@ -18,6 +18,8 @@ @@ -18,6 +18,7 @@
#else #else
#include <dirent.h> #include <dirent.h>
#endif // __WINDOWS__ #endif // __WINDOWS__
+ +
+#include <errno.h>
#include <stdlib.h> #include <stdlib.h>
#include <list> #include <list>
@@ -26,8 +28,6 @@ @@ -26,8 +27,6 @@
#include <stout/error.hpp> #include <stout/error.hpp>
#include <stout/try.hpp> #include <stout/try.hpp>
@ -20,17 +19,17 @@ index f8da9ef74a885cc39424b3e50cebca905d88ca44..25e2bec6415f2382291cf8da5c0a8c44
namespace os { namespace os {
@@ -36,36 +36,32 @@ inline Try<std::list<std::string>> ls(const std::string& directory) @@ -36,36 +35,32 @@ inline Try<std::list<std::string>> ls(const std::string& directory)
DIR* dir = opendir(directory.c_str()); DIR* dir = opendir(directory.c_str());
if (dir == NULL) { if (dir == nullptr) {
- // Preserve `opendir` error. - // Preserve `opendir` error.
return ErrnoError("Failed to opendir '" + directory + "'"); return ErrnoError("Failed to opendir '" + directory + "'");
} }
- dirent* temp = (dirent*) malloc(os::dirent_size(dir)); - dirent* temp = (dirent*) malloc(os::dirent_size(dir));
- -
- if (temp == NULL) { - if (temp == nullptr) {
- // Preserve `malloc` error. - // Preserve `malloc` error.
- ErrnoError error("Failed to allocate directory entries"); - ErrnoError error("Failed to allocate directory entries");
- closedir(dir); - closedir(dir);
@ -41,7 +40,7 @@ index f8da9ef74a885cc39424b3e50cebca905d88ca44..25e2bec6415f2382291cf8da5c0a8c44
struct dirent* entry; struct dirent* entry;
- int error; - int error;
- while ((error = readdir_r(dir, temp, &entry)) == 0 && entry != NULL) { - while ((error = readdir_r(dir, temp, &entry)) == 0 && entry != nullptr) {
+ // Zero `errno` before starting to call `readdir`. This is necessary + // Zero `errno` before starting to call `readdir`. This is necessary
+ // to allow us to determine when `readdir` returns an error. + // to allow us to determine when `readdir` returns an error.
+ errno = 0; + errno = 0;

View File

@ -1,34 +1,35 @@
diff -Naur a/3rdparty/libprocess/3rdparty/stout/include/Makefile.am b/3rdparty/libprocess/3rdparty/stout/include/Makefile.am diff --git a/3rdparty/stout/include/Makefile.am b/3rdparty/stout/include/Makefile.am
--- a/3rdparty/libprocess/3rdparty/stout/include/Makefile.am 2016-09-02 15:20:04.834457344 +0200 index 1f2ee85..b0b08d8 100644
+++ b/3rdparty/libprocess/3rdparty/stout/include/Makefile.am 2016-09-02 15:21:00.190983981 +0200 --- a/3rdparty/stout/include/Makefile.am
@@ -62,7 +62,6 @@ +++ b/3rdparty/stout/include/Makefile.am
stout/os/chroot.hpp \ @@ -64,7 +64,6 @@ nobase_include_HEADERS = \
stout/os/close.hpp \ stout/os/chroot.hpp \
stout/os/constants.hpp \ stout/os/close.hpp \
- stout/os/direntsize.hpp \ stout/os/constants.hpp \
stout/os/environment.hpp \ - stout/os/direntsize.hpp \
stout/os/exists.hpp \ stout/os/environment.hpp \
stout/os/fcntl.hpp \ stout/os/exists.hpp \
@@ -101,7 +100,6 @@ stout/os/fcntl.hpp \
stout/os/posix/bootid.hpp \ @@ -108,7 +107,6 @@ nobase_include_HEADERS = \
stout/os/posix/chown.hpp \ stout/os/posix/chown.hpp \
stout/os/posix/chroot.hpp \ stout/os/posix/chroot.hpp \
- stout/os/posix/direntsize.hpp \ stout/os/posix/close.hpp \
stout/os/posix/exists.hpp \ - stout/os/posix/direntsize.hpp \
stout/os/posix/fcntl.hpp \ stout/os/posix/exists.hpp \
stout/os/posix/fork.hpp \ stout/os/posix/fcntl.hpp \
@@ -118,7 +116,6 @@ stout/os/posix/fork.hpp \
stout/os/raw/environment.hpp \ @@ -134,7 +132,6 @@ nobase_include_HEADERS = \
stout/os/windows/bootid.hpp \ stout/os/windows/bootid.hpp \
stout/os/windows/chroot.hpp \ stout/os/windows/chroot.hpp \
- stout/os/windows/direntsize.hpp \ stout/os/windows/close.hpp \
stout/os/windows/exists.hpp \ - stout/os/windows/direntsize.hpp \
stout/os/windows/fcntl.hpp \ stout/os/windows/exists.hpp \
stout/os/windows/fork.hpp \ stout/os/windows/fcntl.hpp \
diff --git a/3rdparty/libprocess/3rdparty/stout/include/stout/os/direntsize.hpp b/3rdparty/libprocess/3rdparty/stout/include/stout/os/direntsize.hpp stout/os/windows/fork.hpp \
diff --git a/3rdparty/stout/include/stout/os/direntsize.hpp b/3rdparty/stout/include/stout/os/direntsize.hpp
deleted file mode 100644 deleted file mode 100644
index 819f99a89862491e99873bdedc603317b91266b0..0000000000000000000000000000000000000000 index 819f99a..0000000
--- a/3rdparty/libprocess/3rdparty/stout/include/stout/os/direntsize.hpp --- a/3rdparty/stout/include/stout/os/direntsize.hpp
+++ /dev/null +++ /dev/null
@@ -1,26 +0,0 @@ @@ -1,26 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); -// Licensed under the Apache License, Version 2.0 (the "License");
@ -57,10 +58,10 @@ index 819f99a89862491e99873bdedc603317b91266b0..00000000000000000000000000000000
- -
- -
-#endif // __STOUT_OS_DIRENTSIZE_HPP__ -#endif // __STOUT_OS_DIRENTSIZE_HPP__
diff --git a/3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/direntsize.hpp b/3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/direntsize.hpp diff --git a/3rdparty/stout/include/stout/os/posix/direntsize.hpp b/3rdparty/stout/include/stout/os/posix/direntsize.hpp
deleted file mode 100644 deleted file mode 100644
index 9d8f72eb607a288e77f92b39b91542ff5eb2fa21..0000000000000000000000000000000000000000 index 9d8f72e..0000000
--- a/3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/direntsize.hpp --- a/3rdparty/stout/include/stout/os/posix/direntsize.hpp
+++ /dev/null +++ /dev/null
@@ -1,42 +0,0 @@ @@ -1,42 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); -// Licensed under the Apache License, Version 2.0 (the "License");
@ -105,10 +106,10 @@ index 9d8f72eb607a288e77f92b39b91542ff5eb2fa21..00000000000000000000000000000000
-} // namespace os { -} // namespace os {
- -
-#endif // __STOUT_OS_POSIX_DIRENTSIZE_HPP__ -#endif // __STOUT_OS_POSIX_DIRENTSIZE_HPP__
diff --git a/3rdparty/libprocess/3rdparty/stout/include/stout/os/windows/direntsize.hpp b/3rdparty/libprocess/3rdparty/stout/include/stout/os/windows/direntsize.hpp diff --git a/3rdparty/stout/include/stout/os/windows/direntsize.hpp b/3rdparty/stout/include/stout/os/windows/direntsize.hpp
deleted file mode 100644 deleted file mode 100644
index 7c8c7a06f478b3a80341a874494cff21f71fc397..0000000000000000000000000000000000000000 index 7c8c7a0..0000000
--- a/3rdparty/libprocess/3rdparty/stout/include/stout/os/windows/direntsize.hpp --- a/3rdparty/stout/include/stout/os/windows/direntsize.hpp
+++ /dev/null +++ /dev/null
@@ -1,43 +0,0 @@ @@ -1,43 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); -// Licensed under the Apache License, Version 2.0 (the "License");

View File

@ -23,7 +23,7 @@ stdenv.mkDerivation {
}; };
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = http://sourceforge.net/projects/pidgin-latex/; homepage = "http://sourceforge.net/projects/pidgin-latex/";
description = "LaTeX rendering plugin for Pidgin IM"; description = "LaTeX rendering plugin for Pidgin IM";
license = licenses.gpl2; license = licenses.gpl2;
platforms = platforms.linux; platforms = platforms.linux;

View File

@ -1,60 +1,59 @@
{ stdenv, lib, fetchFromGitHub, fetchgit, qtbase, qtimageformats { stdenv, lib, fetchFromGitHub, fetchgit, pkgconfig, gyp, cmake
, qtbase, qtimageformats, qtwayland
, breakpad, ffmpeg, openalSoft, openssl, zlib, libexif, lzma, libopus , breakpad, ffmpeg, openalSoft, openssl, zlib, libexif, lzma, libopus
, gtk2, glib, cairo, pango, gdk_pixbuf, atk, libappindicator-gtk2 , gtk2, glib, cairo, pango, gdk_pixbuf, atk, libappindicator-gtk2
, libwebp, libunity, dee, libdbusmenu-glib, libva , libwebp, libunity, dee, libdbusmenu-glib, libva-full, wayland
, xcbutilrenderutil, icu, libSM, libICE, libproxy
, pkgconfig, libxcb, xcbutilwm, xcbutilimage, xcbutilkeysyms , libxcb, xcbutilwm, xcbutilimage, xcbutilkeysyms, libxkbcommon
, libxkbcommon, libpng, libjpeg, freetype, harfbuzz, pcre16 , libpng, libjpeg, freetype, harfbuzz, pcre16, xproto, libX11
, xproto, libX11, inputproto, sqlite, dbus , inputproto, sqlite, dbus
}: }:
let let
system-x86_64 = lib.elem stdenv.system lib.platforms.x86_64; system-x86_64 = lib.elem stdenv.system lib.platforms.x86_64;
packagedQt = "5.6.0"; packagedQt = "5.6.2";
# Hacky: split "1.2.3-4" into "1.2.3" and "4" # Hacky: split "1.2.3-4" into "1.2.3" and "4"
systemQt = (builtins.parseDrvName qtbase.version).name; systemQt = (builtins.parseDrvName qtbase.version).name;
qtLibs = [ qtbase qtimageformats qtwayland ];
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
name = "telegram-desktop-${version}"; name = "telegram-desktop-${version}";
version = "0.10.1"; version = "0.10.19";
qtVersion = lib.replaceStrings ["."] ["_"] packagedQt; qtVersion = lib.replaceStrings ["."] ["_"] packagedQt;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "telegramdesktop"; owner = "telegramdesktop";
repo = "tdesktop"; repo = "tdesktop";
rev = "v${version}"; rev = "v${version}";
sha256 = "08isxwif6zllglkpd9i7ypxm2s4bibzqris48607bafr88ylksdk"; sha256 = "1p07kxfmcd90sx9bq046x03h1h807vs0pn64lfghr6m6ln8z44s3";
}; };
tgaur = fetchgit { tgaur = fetchgit {
url = "https://aur.archlinux.org/telegram-desktop.git"; url = "https://aur.archlinux.org/telegram-desktop.git";
rev = "9ce7be9efed501f988bb099956fa63729f2c25ea"; rev = "99bb0519f14e23fafb6884fe296d34b6f8bed5c3";
sha256 = "1wp6lqscpm2byizchm0bj48dg9bga02r9r69ns10zxk0gk0qvvdn"; sha256 = "0z5m3binbl06kk34plmfblhqz6hlnkbnjb93sam0c6c995k3sz82";
}; };
buildInputs = [ buildInputs = [
breakpad ffmpeg openalSoft openssl zlib libexif lzma libopus breakpad ffmpeg openalSoft openssl zlib libexif lzma libopus
gtk2 glib libappindicator-gtk2 libunity cairo pango gdk_pixbuf atk gtk2 glib libappindicator-gtk2 libunity cairo pango gdk_pixbuf atk
dee libdbusmenu-glib libva dee libdbusmenu-glib libva-full xcbutilrenderutil icu libproxy
libSM libICE
# Qt dependencies # Qt dependencies
libxcb xcbutilwm xcbutilimage xcbutilkeysyms libxkbcommon libxcb xcbutilwm xcbutilimage xcbutilkeysyms libxkbcommon
libpng libjpeg freetype harfbuzz pcre16 xproto libX11 libpng libjpeg freetype harfbuzz pcre16 xproto libX11
inputproto sqlite dbus libwebp inputproto sqlite dbus libwebp wayland
]; ];
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig gyp cmake ];
patches = [ "${tgaur}/aur-fixes.diff" ];
enableParallelBuilding = true; enableParallelBuilding = true;
qmakeFlags = [ qtSrcs = builtins.map (x: x.src) qtLibs;
"CONFIG+=release" qtNames = builtins.map (x: (builtins.parseDrvName x.name).name) (lib.tail qtLibs);
"DEFINES+=TDESKTOP_DISABLE_AUTOUPDATE"
"DEFINES+=TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME"
"INCLUDEPATH+=${breakpad}/include/breakpad"
"QT_TDESKTOP_VERSION=${systemQt}"
];
qtSrcs = [ qtbase.src qtimageformats.src ];
qtPatches = qtbase.patches; qtPatches = qtbase.patches;
buildCommand = '' buildCommand = ''
@ -62,15 +61,23 @@ in stdenv.mkDerivation rec {
cd "$sourceRoot" cd "$sourceRoot"
patchPhase patchPhase
sed -i 'Telegram/Telegram.pro' \
-e 's,CUSTOM_API_ID,,g' \
-e 's,/usr,/does-not-exist,g' \
-e 's, -flto,,g' \
-e 's,LIBS += .*libbreakpad_client.a,LIBS += ${breakpad}/lib/libbreakpad_client.a,' \
-e 's, -static-libstdc++,,g' \
-e '/LIBS += .*libxkbcommon.a/d'
export qmakeFlags="$qmakeFlags QT_TDESKTOP_PATH=$PWD/../qt" sed -i Telegram/gyp/Telegram.gyp \
-e 's,/usr/include/breakpad,${breakpad}/include/breakpad,g'
sed -i Telegram/gyp/telegram_linux.gypi \
-e 's,/usr,/does-not-exist,g' \
-e 's,-flto,,g'
sed -i Telegram/gyp/qt.gypi \
-e 's,${packagedQt},${systemQt},g'
gypFlagsArray=(
"-Dlinux_path_qt=$PWD/../qt"
"-Dlinux_lib_ssl=-lssl"
"-Dlinux_lib_crypto=-lcrypto"
"-Dlinux_lib_icu=-licuuc -licutu -licui18n"
)
export QMAKE=$PWD/../qt/bin/qmake export QMAKE=$PWD/../qt/bin/qmake
( mkdir -p ../Libraries ( mkdir -p ../Libraries
@ -79,7 +86,7 @@ in stdenv.mkDerivation rec {
tar -xaf $i tar -xaf $i
done done
cd qtbase-* cd qtbase-*
# This patch is outdated but the fixes doesn't feel very important # This patch is often outdated but the fixes doesn't feel very important
patch -p1 < ../../$sourceRoot/Telegram/Patches/qtbase_${qtVersion}.diff || true patch -p1 < ../../$sourceRoot/Telegram/Patches/qtbase_${qtVersion}.diff || true
for i in $qtPatches; do for i in $qtPatches; do
patch -p1 < $i patch -p1 < $i
@ -89,8 +96,8 @@ in stdenv.mkDerivation rec {
export configureFlags="-prefix "$PWD/../qt" -release -opensource -confirm-license -system-zlib \ export configureFlags="-prefix "$PWD/../qt" -release -opensource -confirm-license -system-zlib \
-system-libpng -system-libjpeg -system-freetype -system-harfbuzz -system-pcre -system-xcb \ -system-libpng -system-libjpeg -system-freetype -system-harfbuzz -system-pcre -system-xcb \
-system-xkbcommon-x11 -no-opengl -static -nomake examples -nomake tests \ -system-xkbcommon-x11 -no-eglfs -no-gtkstyle -static -nomake examples -nomake tests \
-openssl-linked -dbus-linked -system-sqlite -verbose -no-gtkstyle \ -no-directfb -system-proxies -openssl-linked -dbus-linked -system-sqlite -verbose \
${lib.optionalString (!system-x86_64) "-no-sse2"} -no-sse3 -no-ssse3 \ ${lib.optionalString (!system-x86_64) "-no-sse2"} -no-sse3 -no-ssse3 \
-no-sse4.1 -no-sse4.2 -no-avx -no-avx2 -no-mips_dsp -no-mips_dspr2" -no-sse4.1 -no-sse4.2 -no-avx -no-avx2 -no-mips_dsp -no-mips_dspr2"
export dontAddPrefix=1 export dontAddPrefix=1
@ -101,39 +108,29 @@ in stdenv.mkDerivation rec {
buildPhase buildPhase
make install make install
) )
for i in $qtNames; do
( cd qtimageformats-* ( cd $i-*
$QMAKE $QMAKE
buildPhase buildPhase
make install make install
) )
done
) )
( mkdir -p Linux/obj/codegen_style/Debug ( cd Telegram/gyp
cd Linux/obj/codegen_style/Debug gyp "''${gypFlagsArray[@]}" --depth=. --generator-output=../.. -Goutput_dir=out Telegram.gyp --format=cmake
$QMAKE $qmakeFlags ../../../../Telegram/build/qmake/codegen_style/codegen_style.pro
buildPhase
) )
( mkdir -p Linux/obj/codegen_numbers/Debug
cd Linux/obj/codegen_numbers/Debug ( cd out/Release
$QMAKE $qmakeFlags ../../../../Telegram/build/qmake/codegen_numbers/codegen_numbers.pro export ASM=$(type -p gcc)
buildPhase cmake .
) # For some reason, it can't find stdafx.h -- we need to build dependencies till it fails and then retry.
( mkdir -p Linux/DebugIntermediateLang buildPhase || true
cd Linux/DebugIntermediateLang export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -include stdafx.h"
$QMAKE $qmakeFlags ../../Telegram/MetaLang.pro
buildPhase buildPhase
) )
( mkdir -p Linux/ReleaseIntermediate install -Dm755 out/Release/Telegram $out/bin/telegram-desktop
cd Linux/ReleaseIntermediate
$QMAKE $qmakeFlags ../../Telegram/Telegram.pro
pattern="^PRE_TARGETDEPS +="
grep "$pattern" "../../Telegram/Telegram.pro" | sed "s/$pattern//g" | xargs make
buildPhase
)
install -Dm755 Linux/Release/Telegram $out/bin/telegram-desktop
mkdir -p $out/share/applications $out/share/kde4/services mkdir -p $out/share/applications $out/share/kde4/services
sed "s,/usr/bin,$out/bin,g" $tgaur/telegramdesktop.desktop > $out/share/applications/telegramdesktop.desktop sed "s,/usr/bin,$out/bin,g" $tgaur/telegramdesktop.desktop > $out/share/applications/telegramdesktop.desktop
sed "s,/usr/bin,$out/bin,g" $tgaur/tg.protocol > $out/share/kde4/services/tg.protocol sed "s,/usr/bin,$out/bin,g" $tgaur/tg.protocol > $out/share/kde4/services/tg.protocol

View File

@ -11,7 +11,6 @@ stdenv.mkDerivation rec {
sha256 = "0mz0llf1ggl1k46brgrqj3i8qlg1ycmkc5a3a0kg8fg4s1c1m6xk"; sha256 = "0mz0llf1ggl1k46brgrqj3i8qlg1ycmkc5a3a0kg8fg4s1c1m6xk";
}; };
buildInputs = [ pkgconfig glib notmuch ]; buildInputs = [ pkgconfig glib notmuch ];
installPhase = '' installPhase = ''
@ -19,12 +18,10 @@ stdenv.mkDerivation rec {
cp notmuch-addrlookup "$out/bin" cp notmuch-addrlookup "$out/bin"
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Address lookup tool for Notmuch in C"; description = "Address lookup tool for Notmuch in C";
homepage = https://github.com/aperezdc/notmuch-addrlookup-c; homepage = https://github.com/aperezdc/notmuch-addrlookup-c;
maintainers = with maintainers; [ mog ]; maintainers = with maintainers; [ mog garbas ];
platforms = platforms.linux; platforms = platforms.linux;
license = licenses.mit; license = licenses.mit;
}; };

View File

@ -1,11 +1,16 @@
{ fetchurl, stdenv, bash, emacs, fixDarwinDylibNames { fetchurl, stdenv, fixDarwinDylibNames, gdb
, gdb, glib, gmime, gnupg , pkgconfig, gnupg
, pkgconfig, talloc, xapian , xapian, gmime, talloc, zlib
, sphinx, python , doxygen, perl
, pythonPackages
, bash-completion
, emacs
, ruby
, which, dtach, openssl, bash
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "0.22"; version = "0.23.2";
name = "notmuch-${version}"; name = "notmuch-${version}";
passthru = { passthru = {
@ -15,17 +20,39 @@ stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "http://notmuchmail.org/releases/${name}.tar.gz"; url = "http://notmuchmail.org/releases/${name}.tar.gz";
sha256 = "16mrrw6xpsgip4dy8rfx0zncij5h41fsg2aah6x6z83bjbpihhfn"; sha256 = "1g4p5hsrqqbqk6s2w756als60wppvjgpyq104smy3w9vshl7bzgd";
}; };
buildInputs = [ bash emacs glib gmime gnupg pkgconfig talloc xapian sphinx python ] buildInputs = [
pkgconfig gnupg # undefined dependencies
xapian gmime talloc zlib # dependencies described in INSTALL
doxygen perl # (optional) api docs
pythonPackages.sphinx pythonPackages.python # (optional) documentation -> doc/INSTALL
bash-completion # (optional) dependency to install bash completion
emacs # (optional) to byte compile emacs code
ruby # (optional) ruby bindings
which dtach openssl bash # test dependencies
]
++ stdenv.lib.optional stdenv.isDarwin fixDarwinDylibNames ++ stdenv.lib.optional stdenv.isDarwin fixDarwinDylibNames
++ stdenv.lib.optional (!stdenv.isDarwin) gdb; ++ stdenv.lib.optional (!stdenv.isDarwin) gdb;
doCheck = !stdenv.isDarwin;
checkTarget = "test";
patchPhase = '' patchPhase = ''
# XXX: disabling few tests since i have no idea how to make them pass for now
rm -f test/T010-help-test.sh \
test/T350-crypto.sh \
test/T355-smime.sh
find test -type f -exec \ find test -type f -exec \
sed -i \ sed -i \
"1s_#!/usr/bin/env bash_#!${bash}/bin/bash_" \ -e "1s|#!/usr/bin/env bash|#!${bash}/bin/bash|" \
-e "s|gpg |${gnupg}/bin/gpg2 |" \
-e "s| gpg| ${gnupg}/bin/gpg2|" \
-e "s|gpgsm |${gnupg}/bin/gpgsm |" \
-e "s| gpgsm| ${gnupg}/bin/gpgsm|" \
-e "s|crypto.gpg_path=gpg|crypto.gpg_path=${gnupg}/bin/gpg2|" \
"{}" ";" "{}" ";"
for src in \ for src in \
@ -38,44 +65,37 @@ stdenv.mkDerivation rec {
done done
''; '';
preFixup = stdenv.lib.optionalString stdenv.isDarwin ''
set -e
die() {
>&2 echo "$@"
exit 1
}
prg="$out/bin/notmuch"
lib="$(find "$out/lib" -name 'libnotmuch.?.dylib')"
[[ -s "$prg" ]] || die "couldn't find notmuch binary"
[[ -s "$lib" ]] || die "couldn't find libnotmuch"
badname="$(otool -L "$prg" | awk '$1 ~ /libtalloc/ { print $1 }')"
goodname="$(find "${talloc}/lib" -name 'libtalloc.?.?.?.dylib')"
[[ -n "$badname" ]] || die "couldn't find libtalloc reference in binary"
[[ -n "$goodname" ]] || die "couldn't find libtalloc in nix store"
echo "fixing libtalloc link in $lib"
install_name_tool -change "$badname" "$goodname" "$lib"
echo "fixing libtalloc link in $prg"
install_name_tool -change "$badname" "$goodname" "$prg"
'';
postInstall = '' postInstall = ''
make install-man make install-man
''; '';
preFixup = if stdenv.isDarwin then
''
set -e
die() {
>&2 echo "$@"
exit 1
}
prg="$out/bin/notmuch"
lib="$(find "$out/lib" -name 'libnotmuch.?.dylib')"
[[ -s "$prg" ]] || die "couldn't find notmuch binary"
[[ -s "$lib" ]] || die "couldn't find libnotmuch"
badname="$(otool -L "$prg" | awk '$1 ~ /libtalloc/ { print $1 }')"
goodname="$(find "${talloc}/lib" -name 'libtalloc.?.?.?.dylib')"
[[ -n "$badname" ]] || die "couldn't find libtalloc reference in binary"
[[ -n "$goodname" ]] || die "couldn't find libtalloc in nix store"
echo "fixing libtalloc link in $lib"
install_name_tool -change "$badname" "$goodname" "$lib"
echo "fixing libtalloc link in $prg"
install_name_tool -change "$badname" "$goodname" "$prg"
''
else
"";
# XXX: emacs tests broken
doCheck = false;
checkTarget = "test";
meta = { meta = {
description = "Mail indexer"; description = "Mail indexer";
license = stdenv.lib.licenses.gpl3; license = stdenv.lib.licenses.gpl3;

View File

@ -1,14 +1,14 @@
{ stdenv, lib, fetchFromGitHub, go, pkgs }: { stdenv, lib, fetchFromGitHub, go, pkgs }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "0.14.11"; version = "0.14.12";
name = "syncthing-${version}"; name = "syncthing-${version}";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "syncthing"; owner = "syncthing";
repo = "syncthing"; repo = "syncthing";
rev = "v${version}"; rev = "v${version}";
sha256 = "12b8284mya5z1q7ighbzk8rqxj0kcv5n0l39dygikfcbl1krr6sg"; sha256 = "09w0i9rmdi9fjsphib2x6gs6yn5d1a41nh1pm4k9ks31am9zdwsm";
}; };
buildInputs = [ go ]; buildInputs = [ go ];

View File

@ -0,0 +1,138 @@
{ stdenv
, coreutils
, patchelf
, requireFile
, alsaLib
, fontconfig
, freetype
, gcc
, glib
, libpng
, ncurses
, opencv
, openssl
, unixODBC
, xorg
, zlib
, libxml2
, libuuid
}:
let
platform =
if stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux" then
"Linux"
else
throw "Mathematica requires i686-linux or x86_64 linux";
in
stdenv.mkDerivation rec {
version = "10.0.2";
name = "mathematica-${version}";
src = requireFile rec {
name = "Mathematica_${version}_LINUX.sh";
message = ''
This nix expression requires that ${name} is
already part of the store. Find the file on your Mathematica CD
and add it to the nix store with nix-store --add-fixed sha256 <FILE>.
'';
sha256 = "1d2yaiaikzcacjamlw64g3xkk81m3pb4vz4an12cv8nb7kb20x9l";
};
buildInputs = [
coreutils
patchelf
alsaLib
coreutils
fontconfig
freetype
gcc.cc
gcc.libc
glib
ncurses
opencv
openssl
unixODBC
libxml2
libuuid
] ++ (with xorg; [
libX11
libXext
libXtst
libXi
libXmu
libXrender
libxcb
libXcursor
libXfixes
libXrandr
libICE
libSM
]);
ldpath = stdenv.lib.makeLibraryPath buildInputs
+ stdenv.lib.optionalString (stdenv.system == "x86_64-linux")
(":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" buildInputs);
phases = "unpackPhase installPhase fixupPhase";
unpackPhase = ''
echo "=== Extracting makeself archive ==="
# find offset from file
offset=$(${stdenv.shell} -c "$(grep -axm1 -e 'offset=.*' $src); echo \$offset" $src)
dd if="$src" ibs=$offset skip=1 | tar -xf -
cd Unix
'';
installPhase = ''
cd Installer
# don't restrict PATH, that has already been done
sed -i -e 's/^PATH=/# PATH=/' MathInstaller
echo "=== Running MathInstaller ==="
./MathInstaller -auto -createdir=y -execdir=$out/bin -targetdir=$out/libexec/Mathematica -platforms=${platform} -silent
'';
preFixup = ''
echo "=== PatchElfing away ==="
# This code should be a bit forgiving of errors, unfortunately
set +e
find $out/libexec/Mathematica/SystemFiles -type f -perm -0100 | while read f; do
type=$(readelf -h "$f" 2>/dev/null | grep 'Type:' | sed -e 's/ *Type: *\([A-Z]*\) (.*/\1/')
if [ -z "$type" ]; then
:
elif [ "$type" == "EXEC" ]; then
echo "patching $f executable <<"
patchelf --shrink-rpath "$f"
patchelf \
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "$(patchelf --print-rpath "$f"):${ldpath}" \
"$f" \
&& patchelf --shrink-rpath "$f" \
|| echo unable to patch ... ignoring 1>&2
elif [ "$type" == "DYN" ]; then
echo "patching $f library <<"
patchelf \
--set-rpath "$(patchelf --print-rpath "$f"):${ldpath}" \
"$f" \
&& patchelf --shrink-rpath "$f" \
|| echo unable to patch ... ignoring 1>&2
else
echo "not patching $f <<: unknown elf type"
fi
done
'';
# all binaries are already stripped
dontStrip = true;
# we did this in prefixup already
dontPatchELF = true;
meta = {
description = "Wolfram Mathematica computational software system";
homepage = "http://www.wolfram.com/mathematica/";
license = stdenv.lib.licenses.unfree;
};
}

View File

@ -26,7 +26,7 @@ let
throw "Mathematica requires i686-linux or x86_64 linux"; throw "Mathematica requires i686-linux or x86_64 linux";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "10.0.2"; version = "11.0.1";
name = "mathematica-${version}"; name = "mathematica-${version}";
@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
already part of the store. Find the file on your Mathematica CD already part of the store. Find the file on your Mathematica CD
and add it to the nix store with nix-store --add-fixed sha256 <FILE>. and add it to the nix store with nix-store --add-fixed sha256 <FILE>.
''; '';
sha256 = "1d2yaiaikzcacjamlw64g3xkk81m3pb4vz4an12cv8nb7kb20x9l"; sha256 = "1qqwz8gbw74rnnyirpbdanwx3d25s4x0i4zc7bs6kp959x66cdkw";
}; };
buildInputs = [ buildInputs = [
@ -89,9 +89,10 @@ stdenv.mkDerivation rec {
cd Installer cd Installer
# don't restrict PATH, that has already been done # don't restrict PATH, that has already been done
sed -i -e 's/^PATH=/# PATH=/' MathInstaller sed -i -e 's/^PATH=/# PATH=/' MathInstaller
sed -i -e 's/\/bin\/bash/\/bin\/sh/' MathInstaller
echo "=== Running MathInstaller ===" echo "=== Running MathInstaller ==="
./MathInstaller -auto -createdir=y -execdir=$out/bin -targetdir=$out/libexec/Mathematica -platforms=${platform} -silent ./MathInstaller -auto -createdir=y -execdir=$out/bin -targetdir=$out/libexec/Mathematica -silent
''; '';
preFixup = '' preFixup = ''

View File

@ -45,6 +45,8 @@ rec {
git-annex-remote-b2 = callPackage ./git-annex-remote-b2 { }; git-annex-remote-b2 = callPackage ./git-annex-remote-b2 { };
git-annex-remote-rclone = callPackage ./git-annex-remote-rclone { };
# support for bugzilla # support for bugzilla
git-bz = callPackage ./git-bz { }; git-bz = callPackage ./git-bz { };

View File

@ -0,0 +1,32 @@
{ stdenv, fetchFromGitHub, rclone, makeWrapper }:
stdenv.mkDerivation rec {
name = "git-annex-remote-rclone-${version}";
version = "0.4";
rev = "v${version}";
src = fetchFromGitHub {
inherit rev;
owner = "DanielDent";
repo = "git-annex-remote-rclone";
sha256 = "1myk307hqm8dlxhkmwr347rdd28niv5h0gyrxm30y77zlly30ddk";
};
nativeBuildInputs = [ makeWrapper ];
phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
installPhase = ''
mkdir -p $out/bin
cp git-annex-remote-rclone $out/bin
wrapProgram "$out/bin/git-annex-remote-rclone" \
--prefix PATH ":" "${stdenv.lib.makeBinPath [ rclone ]}"
'';
meta = with stdenv.lib; {
homepage = https://github.com/DanielDent/git-annex-remote-rclone;
description = "Use rclone supported cloud storage providers with git-annex";
license = licenses.gpl3;
maintainers = [ maintainers.montag451 ];
};
}

View File

@ -14,11 +14,11 @@
}: }:
let let
version = "2.6.12"; version = "2.6.15";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/avidemux/avidemux/${version}/avidemux_${version}.tar.gz"; url = "mirror://sourceforge/avidemux/avidemux/${version}/avidemux_${version}.tar.gz";
sha256 = "0nz52yih8sff53inndkh2dba759xjzsh4b8xjww419lcpk0qp6kn"; sha256 = "0mr2nll81ki9d1s68klhm19jmr15450wjaws1p0b0y2qqwyrprdh";
}; };
common = { common = {
@ -43,7 +43,7 @@ let
; ;
meta = { meta = {
homepage = http://fixounet.free.fr/avidemux/; homepage = "http://fixounet.free.fr/avidemux/";
description = "Free video editor designed for simple video editing tasks"; description = "Free video editor designed for simple video editing tasks";
maintainers = with stdenv.lib.maintainers; [ viric abbradar ]; maintainers = with stdenv.lib.maintainers; [ viric abbradar ];
platforms = with stdenv.lib.platforms; linux; platforms = with stdenv.lib.platforms; linux;

View File

@ -1,12 +1,12 @@
diff -ru3 avidemux_2.6.12.old/avidemux_core/ADM_core/src/ADM_fileio.cpp avidemux_2.6.12/avidemux_core/ADM_core/src/ADM_fileio.cpp diff -ru3 avidemux_2.6.15-old/avidemux_core/ADM_core/src/ADM_folder_linux.cpp avidemux_2.6.15/avidemux_core/ADM_core/src/ADM_folder_linux.cpp
--- avidemux_2.6.12.old/avidemux_core/ADM_core/src/ADM_fileio.cpp 2016-03-25 15:26:00.368213627 +0300 --- avidemux_2.6.15-old/avidemux_core/ADM_core/src/ADM_folder_linux.cpp 2016-11-23 02:13:41.406566362 +0300
+++ avidemux_2.6.12/avidemux_core/ADM_core/src/ADM_fileio.cpp 2016-03-26 02:32:56.163550537 +0300 +++ avidemux_2.6.15/avidemux_core/ADM_core/src/ADM_folder_linux.cpp 2016-11-23 02:14:33.433566147 +0300
@@ -393,7 +393,7 @@ @@ -92,7 +92,7 @@
return ADM_getRelativePath(buffer, base1, base2, base3); char *ADM_getInstallRelativePath(const char *base1, const char *base2, const char *base3)
#else {
- return ADM_getRelativePath(ADM_INSTALL_DIR, base1, base2, base3); - return ADM_getRelativePath(ADM_INSTALL_DIR, base1, base2, base3);
+ return ADM_getRelativePath(getenv("ADM_ROOT_DIR"), base1, base2, base3); + return ADM_getRelativePath(getenv("ADM_ROOT_DIR"), base1, base2, base3);
#endif }
} const std::string ADM_getI8NDir(const std::string &flavor)
{

View File

@ -79,13 +79,13 @@ let
}; };
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
name = "mpv-${version}"; name = "mpv-${version}";
version = "0.21.0"; version = "0.22.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "mpv-player"; owner = "mpv-player";
repo = "mpv"; repo = "mpv";
rev = "v${version}"; rev = "v${version}";
sha256 = "1v1qfppysi0qn40q9z7cx9gs7pcrz2hn1g44iynygvgj29h1gify"; sha256 = "0mv8fs2zxp6pvpi5xdrpvvqcaa5f0c83jdfi0pfqnwbpkz1kb9s6";
}; };
patchPhase = '' patchPhase = ''
@ -160,6 +160,11 @@ in stdenv.mkDerivation rec {
--prefix PATH : "${youtube-dl}/bin" \ --prefix PATH : "${youtube-dl}/bin" \
'' + optionalString vapoursynthSupport '' '' + optionalString vapoursynthSupport ''
--prefix PYTHONPATH : "$(toPythonPath ${vapoursynth}):$PYTHONPATH" --prefix PYTHONPATH : "$(toPythonPath ${vapoursynth}):$PYTHONPATH"
'' + ''
cp TOOLS/umpv $out/bin
wrapProgram $out/bin/umpv \
--set MPV "$out/bin/mpv"
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -1,4 +1,4 @@
{stdenv, fetchurl, pkgconfig, lua5, curl, quvi_scripts, libproxy, libgcrypt}: { stdenv, fetchurl, pkgconfig, lua5, curl, quvi_scripts, libproxy, libgcrypt, glib }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "libquvi-${version}"; name = "libquvi-${version}";
@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
sha256 = "1cl1kbgxl1jnx2nwx4z90l0lap09lnnj1fg7hxsxk3m6aj4y4grd"; sha256 = "1cl1kbgxl1jnx2nwx4z90l0lap09lnnj1fg7hxsxk3m6aj4y4grd";
}; };
buildInputs = [ pkgconfig lua5 curl quvi_scripts libproxy libgcrypt ]; buildInputs = [ pkgconfig lua5 curl quvi_scripts libproxy libgcrypt glib ];
meta = { meta = {
description = "Web video downloader"; description = "Web video downloader";

View File

@ -1,6 +1,6 @@
{ stdenv, fetchurl, fetchpatch, python2, zlib, pkgconfig, glib { stdenv, fetchurl, fetchpatch, python2, zlib, pkgconfig, glib
, ncurses, perl, pixman, vde2, alsaLib, texinfo, libuuid, flex , ncurses, perl, pixman, vde2, alsaLib, texinfo, libuuid, flex
, bison, lzo, snappy, libaio, gnutls, nettle , bison, lzo, snappy, libaio, gnutls, nettle, curl
, makeWrapper , makeWrapper
, attr, libcap, libcap_ng , attr, libcap, libcap_ng
, CoreServices, Cocoa, rez, setfile , CoreServices, Cocoa, rez, setfile
@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
buildInputs = buildInputs =
[ python2 zlib pkgconfig glib ncurses perl pixman [ python2 zlib pkgconfig glib ncurses perl pixman
vde2 texinfo libuuid flex bison makeWrapper lzo snappy vde2 texinfo libuuid flex bison makeWrapper lzo snappy
gnutls nettle gnutls nettle curl
] ]
++ optionals stdenv.isDarwin [ CoreServices Cocoa rez setfile ] ++ optionals stdenv.isDarwin [ CoreServices Cocoa rez setfile ]
++ optionals seccompSupport [ libseccomp ] ++ optionals seccompSupport [ libseccomp ]
@ -123,6 +123,11 @@ stdenv.mkDerivation rec {
url = "http://git.qemu.org/?p=qemu.git;a=patch;h=8caed3d564672e8bc6d2e4c6a35228afd01f4723"; url = "http://git.qemu.org/?p=qemu.git;a=patch;h=8caed3d564672e8bc6d2e4c6a35228afd01f4723";
sha256 = "19sq6fh7nh8wrk52skky4vwm80029lhm093g11f539krmzjgipik"; sha256 = "19sq6fh7nh8wrk52skky4vwm80029lhm093g11f539krmzjgipik";
}) })
(fetchpatch {
name = "qemu-CVE-2016-7907.patch";
url = "http://git.qemu.org/?p=qemu.git;a=patch;h=070c4b92b8cd5390889716677a0b92444d6e087a";
sha256 = "0in89697r6kwkf302v3cg16390q7qs33n2b4kba26m4x65632dxm";
})
# FIXME: Fix for CVE-2016-9101 not yet ready: https://lists.gnu.org/archive/html/qemu-devel/2016-10/msg03024.html # FIXME: Fix for CVE-2016-9101 not yet ready: https://lists.gnu.org/archive/html/qemu-devel/2016-10/msg03024.html

View File

@ -4,16 +4,17 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "windowmaker-${version}"; name = "windowmaker-${version}";
version = "0.95.6"; version = "0.95.7";
srcName = "WindowMaker-${version}"; srcName = "WindowMaker-${version}";
src = fetchurl { src = fetchurl {
url = "http://windowmaker.org/pub/source/release/${srcName}.tar.gz"; url = "http://windowmaker.org/pub/source/release/${srcName}.tar.gz";
sha256 = "1i3dw1yagsa3rs9x2na2ynqlgmbahayws0kz4vl00fla6550nns3"; sha256 = "1acph0nq6fsb452sl7j7a7kcc87zqqaw7qms1p8ijar19dn4hbc4";
}; };
buildInputs = [ pkgconfig nativeBuildInputs = [ pkgconfig ];
libX11 libXext libXft libXmu libXinerama libXrandr libXpm
buildInputs = [ libX11 libXext libXft libXmu libXinerama libXrandr libXpm
imagemagick libpng libjpeg libexif libtiff libungif libwebp ]; imagemagick libpng libjpeg libexif libtiff libungif libwebp ];
configureFlags = [ configureFlags = [

View File

@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
patches = [ ./fix-paths.patch ]; patches = [ ./fix-paths.patch ];
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = http://github.com/alexkay/xmonad-log-applet; homepage = "http://github.com/alexkay/xmonad-log-applet";
license = licenses.bsd3; license = licenses.bsd3;
description = "An applet that will display XMonad log information (${desktopSupport} version)"; description = "An applet that will display XMonad log information (${desktopSupport} version)";
platforms = platforms.linux; platforms = platforms.linux;

View File

@ -247,7 +247,7 @@ rec {
echo "Adding contents..." echo "Adding contents..."
for item in $contents; do for item in $contents; do
echo "Adding $item" echo "Adding $item"
rsync -a $item/ layer/ rsync -ak $item/ layer/
done done
else else
echo "No contents to add to layer." echo "No contents to add to layer."
@ -310,7 +310,7 @@ rec {
echo "Adding contents..." echo "Adding contents..."
for item in ${toString contents}; do for item in ${toString contents}; do
echo "Adding $item..." echo "Adding $item..."
rsync -a $item/ layer/ rsync -ak $item/ layer/
done done
''; '';

View File

@ -1,4 +1,4 @@
{ stdenv, fetchFromGitHub }: { stdenv, fetchFromGitHub, python2Packages, fontforge }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "xits-math-${version}"; name = "xits-math-${version}";
@ -11,7 +11,11 @@ stdenv.mkDerivation rec {
sha256 = "08nn676c41a7gmmhrzi8mm0g74z8aiaafjk48pqcwxvjj9av7xjg"; sha256 = "08nn676c41a7gmmhrzi8mm0g74z8aiaafjk48pqcwxvjj9av7xjg";
}; };
phases = [ "unpackPhase" "installPhase" ]; nativeBuildInputs = [ fontforge ] ++ (with python2Packages; [ python fonttools ]);
postPatch = ''
rm *.otf
'';
installPhase = '' installPhase = ''
mkdir -p $out/share/fonts/opentype mkdir -p $out/share/fonts/opentype
@ -19,7 +23,7 @@ stdenv.mkDerivation rec {
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = https://github.com/khaledhosny/xits-math; homepage = "https://github.com/khaledhosny/xits-math";
description = "OpenType implementation of STIX fonts with math support"; description = "OpenType implementation of STIX fonts with math support";
license = licenses.ofl; license = licenses.ofl;
platforms = platforms.all; platforms = platforms.all;

View File

@ -40,7 +40,7 @@ stdenv.mkDerivation rec {
homepage = https://wiki.gnome.org/action/show/Apps/Calculator; homepage = https://wiki.gnome.org/action/show/Apps/Calculator;
description = "Application that solves mathematical equations and is suitable as a default application in a Desktop environment"; description = "Application that solves mathematical equations and is suitable as a default application in a Desktop environment";
maintainers = gnome3.maintainers; maintainers = gnome3.maintainers;
license = licenses.gpl2; license = licenses.gpl3;
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View File

@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
homepage = https://wiki.gnome.org/action/show/Apps/Calculator; homepage = https://wiki.gnome.org/action/show/Apps/Calculator;
description = "Application that solves mathematical equations and is suitable as a default application in a Desktop environment"; description = "Application that solves mathematical equations and is suitable as a default application in a Desktop environment";
maintainers = gnome3.maintainers; maintainers = gnome3.maintainers;
license = licenses.gpl2; license = licenses.gpl3;
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View File

@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
homepage = https://wiki.gnome.org/Apps/Mines; homepage = https://wiki.gnome.org/Apps/Mines;
description = "Clear hidden mines from a minefield"; description = "Clear hidden mines from a minefield";
maintainers = gnome3.maintainers; maintainers = gnome3.maintainers;
license = licenses.gpl2; license = licenses.gpl3;
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View File

@ -3,11 +3,11 @@
, withContrib ? true }: , withContrib ? true }:
let let
versionPkg = "0.2.11" ; versionPkg = "0.2.12" ;
contrib = fetchurl { contrib = fetchurl {
url = "mirror://sourceforge/ats2-lang/ATS2-Postiats-contrib-${versionPkg}.tgz" ; url = "mirror://sourceforge/ats2-lang/ATS2-Postiats-contrib-${versionPkg}.tgz" ;
sha256 = "0kc4nx1904745c1rkj9yfbayidw7rks1mwq0lxmvsgghn98dxwjn" ; sha256 = "16jzabmwq5yz72dzlkc2hmvf2lan83gayn21gbl65jgpwdsbh170" ;
}; };
postInstallContrib = stdenv.lib.optionalString withContrib postInstallContrib = stdenv.lib.optionalString withContrib
@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/ats2-lang/ATS2-Postiats-${version}.tgz"; url = "mirror://sourceforge/ats2-lang/ATS2-Postiats-${version}.tgz";
sha256 = "140xy129fr11bdf4bj6qya9mf0fhnv2x7ksb9j46pf2yzrsrks8g"; sha256 = "0m8gmm1pnklixxw76yjjqqqixm2cyp91rnq4sj1k29qp4k9zxpl4";
}; };
buildInputs = [ gmp ]; buildInputs = [ gmp ];

View File

@ -1,13 +1,13 @@
Change the name of the library directory to match the version of the package. Change the name of the library directory to match the version of the package.
diff -Naur ATS2-Postiats-0.2.11/configure postiats-new/configure diff -Naur ATS2-Postiats-0.2.12/configure postiats-new/configure
--- ATS2-Postiats-0.2.11/configure 2016-10-13 12:03:20.000000000 -0400 --- ATS2-Postiats-0.2.12/configure 2016-10-13 12:03:20.000000000 -0400
+++ postiats-new/configure 2016-10-23 20:17:29.912579618 -0400 +++ postiats-new/configure 2016-10-23 20:17:29.912579618 -0400
@@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for ATS2/Postiats 0.2.10. -# Generated by GNU Autoconf 2.69 for ATS2/Postiats 0.2.10.
+# Generated by GNU Autoconf 2.69 for ATS2/Postiats 0.2.11. +# Generated by GNU Autoconf 2.69 for ATS2/Postiats 0.2.12.
# #
# Report bugs to <gmpostiats@gmail.com>. # Report bugs to <gmpostiats@gmail.com>.
# #
@ -17,8 +17,8 @@ diff -Naur ATS2-Postiats-0.2.11/configure postiats-new/configure
PACKAGE_TARNAME='ats2-postiats' PACKAGE_TARNAME='ats2-postiats'
-PACKAGE_VERSION='0.2.10' -PACKAGE_VERSION='0.2.10'
-PACKAGE_STRING='ATS2/Postiats 0.2.10' -PACKAGE_STRING='ATS2/Postiats 0.2.10'
+PACKAGE_VERSION='0.2.11' +PACKAGE_VERSION='0.2.12'
+PACKAGE_STRING='ATS2/Postiats 0.2.11' +PACKAGE_STRING='ATS2/Postiats 0.2.12'
PACKAGE_BUGREPORT='gmpostiats@gmail.com' PACKAGE_BUGREPORT='gmpostiats@gmail.com'
PACKAGE_URL='' PACKAGE_URL=''
@ -27,7 +27,7 @@ diff -Naur ATS2-Postiats-0.2.11/configure postiats-new/configure
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
-\`configure' configures ATS2/Postiats 0.2.10 to adapt to many kinds of systems. -\`configure' configures ATS2/Postiats 0.2.10 to adapt to many kinds of systems.
+\`configure' configures ATS2/Postiats 0.2.11 to adapt to many kinds of systems. +\`configure' configures ATS2/Postiats 0.2.12 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -36,7 +36,7 @@ diff -Naur ATS2-Postiats-0.2.11/configure postiats-new/configure
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
- short | recursive ) echo "Configuration of ATS2/Postiats 0.2.10:";; - short | recursive ) echo "Configuration of ATS2/Postiats 0.2.10:";;
+ short | recursive ) echo "Configuration of ATS2/Postiats 0.2.11:";; + short | recursive ) echo "Configuration of ATS2/Postiats 0.2.12:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -45,7 +45,7 @@ diff -Naur ATS2-Postiats-0.2.11/configure postiats-new/configure
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
-ATS2/Postiats configure 0.2.10 -ATS2/Postiats configure 0.2.10
+ATS2/Postiats configure 0.2.11 +ATS2/Postiats configure 0.2.12
generated by GNU Autoconf 2.69 generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc. Copyright (C) 2012 Free Software Foundation, Inc.
@ -54,7 +54,7 @@ diff -Naur ATS2-Postiats-0.2.11/configure postiats-new/configure
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
-It was created by ATS2/Postiats $as_me 0.2.10, which was -It was created by ATS2/Postiats $as_me 0.2.10, which was
+It was created by ATS2/Postiats $as_me 0.2.11, which was +It was created by ATS2/Postiats $as_me 0.2.12, which was
generated by GNU Autoconf 2.69. Invocation command line was generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@ $ $0 $@
@ -63,7 +63,7 @@ diff -Naur ATS2-Postiats-0.2.11/configure postiats-new/configure
# values after options handling. # values after options handling.
ac_log=" ac_log="
-This file was extended by ATS2/Postiats $as_me 0.2.10, which was -This file was extended by ATS2/Postiats $as_me 0.2.10, which was
+This file was extended by ATS2/Postiats $as_me 0.2.11, which was +This file was extended by ATS2/Postiats $as_me 0.2.12, which was
generated by GNU Autoconf 2.69. Invocation command line was generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -72,19 +72,19 @@ diff -Naur ATS2-Postiats-0.2.11/configure postiats-new/configure
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\ ac_cs_version="\\
-ATS2/Postiats config.status 0.2.10 -ATS2/Postiats config.status 0.2.10
+ATS2/Postiats config.status 0.2.11 +ATS2/Postiats config.status 0.2.12
configured by $0, generated by GNU Autoconf 2.69, configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"
diff -Naur ATS2-Postiats-0.2.11/src/CBOOT/config.h postiats-new/src/CBOOT/config.h diff -Naur ATS2-Postiats-0.2.12/src/CBOOT/config.h postiats-new/src/CBOOT/config.h
--- ATS2-Postiats-0.2.11/src/CBOOT/config.h 2016-10-13 12:03:20.000000000 -0400 --- ATS2-Postiats-0.2.12/src/CBOOT/config.h 2016-10-13 12:03:20.000000000 -0400
+++ postiats-new/src/CBOOT/config.h 2016-10-23 20:16:34.613836556 -0400 +++ postiats-new/src/CBOOT/config.h 2016-10-23 20:16:34.613836556 -0400
@@ -44,7 +44,7 @@ @@ -44,7 +44,7 @@
#define PACKAGE_NAME "ATS2/Postiats" #define PACKAGE_NAME "ATS2/Postiats"
/* Define to the full name and version of this package. */ /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "ATS2/Postiats 0.2.10" -#define PACKAGE_STRING "ATS2/Postiats 0.2.10"
+#define PACKAGE_STRING "ATS2/Postiats 0.2.11" +#define PACKAGE_STRING "ATS2/Postiats 0.2.12"
/* Define to the one symbol short name of this package. */ /* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "ats2-postiats" #define PACKAGE_TARNAME "ats2-postiats"
@ -93,7 +93,7 @@ diff -Naur ATS2-Postiats-0.2.11/src/CBOOT/config.h postiats-new/src/CBOOT/config
/* Define to the version of this package. */ /* Define to the version of this package. */
-#define PACKAGE_VERSION "0.2.10" -#define PACKAGE_VERSION "0.2.10"
+#define PACKAGE_VERSION "0.2.11" +#define PACKAGE_VERSION "0.2.12"
/* The size of `void*', as computed by sizeof. */ /* The size of `void*', as computed by sizeof. */
#define SIZEOF_VOIDP 8 #define SIZEOF_VOIDP 8

View File

@ -2,21 +2,21 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "yosys-${version}"; name = "yosys-${version}";
version = "2016.08.18"; version = "2016.11.25";
srcs = [ srcs = [
(fetchFromGitHub { (fetchFromGitHub {
owner = "cliffordwolf"; owner = "cliffordwolf";
repo = "yosys"; repo = "yosys";
rev = "9b8e06bee177f53c34a9dd6dd907a822f21659be"; rev = "5c2c78e2dd12a860f830dafd73fbed8edf1a3823";
sha256 = "0x5c1bcayahn7pbgycxkxr6lkv9m0jpwfdlmyp2m9yzm2lpyw7dg"; sha256 = "1cvfkg0hllp7k2g52mxczd8d0ad7inlpkg27rrbyani2kg0066bk";
name = "yosys"; name = "yosys";
}) })
(fetchFromBitbucket { (fetchFromBitbucket {
owner = "alanmi"; owner = "alanmi";
repo = "abc"; repo = "abc";
rev = "a2e5bc66a68a"; rev = "238674cd44f2";
sha256 = "09yvhj53af91nc54gmy7cbp7yljfcyj68a87494r5xvdfnsj11gy"; sha256 = "18xk7lqai05am11zymixilgam4jvz5f2jwy9cgillz035man2yzw";
name = "yosys-abc"; name = "yosys-abc";
}) })
]; ];

View File

@ -144,7 +144,6 @@ self: super: {
groupoids = dontHaddock super.groupoids; groupoids = dontHaddock super.groupoids;
hamlet = dontHaddock super.hamlet; hamlet = dontHaddock super.hamlet;
HaXml = dontHaddock super.HaXml; HaXml = dontHaddock super.HaXml;
HDBC-odbc = dontHaddock super.HDBC-odbc;
hoodle-core = dontHaddock super.hoodle-core; hoodle-core = dontHaddock super.hoodle-core;
hsc3-db = dontHaddock super.hsc3-db; hsc3-db = dontHaddock super.hsc3-db;
http-client-conduit = dontHaddock super.http-client-conduit; http-client-conduit = dontHaddock super.http-client-conduit;
@ -1067,6 +1066,15 @@ self: super: {
# https://github.com/roelvandijk/terminal-progress-bar/issues/13 # https://github.com/roelvandijk/terminal-progress-bar/issues/13
terminal-progress-bar = doJailbreak super.terminal-progress-bar; terminal-progress-bar = doJailbreak super.terminal-progress-bar;
# https://github.com/hdbc/hdbc-odbc/pull/29
HDBC-odbc = overrideCabal super.HDBC-odbc (old: {
postPatch = old.postPatch or "" + ''
sed -e '/data BoundValue =/ { s/$/{/ ; n; n ; s/{ bvVal/ bvVal/ }' \
-e 's/-- | This is rather/-- This is rather/' \
-i Database/HDBC/ODBC/Statement.hsc
'';
});
# https://github.com/vshabanov/HsOpenSSL/issues/11 # https://github.com/vshabanov/HsOpenSSL/issues/11
HsOpenSSL = doJailbreak super.HsOpenSSL; HsOpenSSL = doJailbreak super.HsOpenSSL;

View File

@ -37,7 +37,7 @@ core-packages:
- ghcjs-base-0 - ghcjs-base-0
default-package-overrides: default-package-overrides:
# LTS Haskell 7.9 # LTS Haskell 7.10
- abstract-deque ==0.3 - abstract-deque ==0.3
- abstract-par ==0.3.3 - abstract-par ==0.3.3
- AC-Vector ==2.3.2 - AC-Vector ==2.3.2
@ -155,7 +155,7 @@ default-package-overrides:
- asn1-encoding ==0.9.4 - asn1-encoding ==0.9.4
- asn1-parse ==0.9.4 - asn1-parse ==0.9.4
- asn1-types ==0.3.2 - asn1-types ==0.3.2
- async ==2.1.0 - async ==2.1.1
- async-dejafu ==0.1.3.0 - async-dejafu ==0.1.3.0
- atndapi ==0.1.1.0 - atndapi ==0.1.1.0
- atom-conduit ==0.3.1.2 - atom-conduit ==0.3.1.2
@ -286,7 +286,7 @@ default-package-overrides:
- cereal-conduit ==0.7.3 - cereal-conduit ==0.7.3
- cereal-text ==0.1.0.2 - cereal-text ==0.1.0.2
- cereal-vector ==0.2.0.1 - cereal-vector ==0.2.0.1
- cgi ==3001.3.0.1 - cgi ==3001.3.0.2
- ChannelT ==0.0.0.2 - ChannelT ==0.0.0.2
- charset ==0.3.7.1 - charset ==0.3.7.1
- charsetdetect-ae ==1.1.0.1 - charsetdetect-ae ==1.1.0.1
@ -314,9 +314,9 @@ default-package-overrides:
- clash-systemverilog ==0.6.10 - clash-systemverilog ==0.6.10
- clash-verilog ==0.6.10 - clash-verilog ==0.6.10
- clash-vhdl ==0.6.16 - clash-vhdl ==0.6.16
- classy-prelude ==1.0.0.2 - classy-prelude ==1.0.1
- classy-prelude-conduit ==1.0.0 - classy-prelude-conduit ==1.0.1
- classy-prelude-yesod ==1.0.0 - classy-prelude-yesod ==1.0.1
- clay ==0.11 - clay ==0.11
- clckwrks ==0.23.19.2 - clckwrks ==0.23.19.2
- clckwrks-cli ==0.2.16 - clckwrks-cli ==0.2.16
@ -330,7 +330,7 @@ default-package-overrides:
- clumpiness ==0.17.0.0 - clumpiness ==0.17.0.0
- ClustalParser ==1.1.4 - ClustalParser ==1.1.4
- clustering ==0.2.1 - clustering ==0.2.1
- cmark ==0.5.3.1 - cmark ==0.5.4
- cmark-highlight ==0.2.0.0 - cmark-highlight ==0.2.0.0
- cmark-lucid ==0.1.0.0 - cmark-lucid ==0.1.0.0
- cmdargs ==0.10.14 - cmdargs ==0.10.14
@ -351,7 +351,7 @@ default-package-overrides:
- concurrent-output ==1.7.7 - concurrent-output ==1.7.7
- concurrent-supply ==0.1.8 - concurrent-supply ==0.1.8
- conduit ==1.2.8 - conduit ==1.2.8
- conduit-combinators ==1.0.8.1 - conduit-combinators ==1.0.8.2
- conduit-extra ==1.1.15 - conduit-extra ==1.1.15
- conduit-iconv ==0.1.1.1 - conduit-iconv ==0.1.1.1
- conduit-parse ==0.1.2.0 - conduit-parse ==0.1.2.0
@ -853,7 +853,7 @@ default-package-overrides:
- hjsonpointer ==1.0.0.2 - hjsonpointer ==1.0.0.2
- hjsonschema ==1.1.0.1 - hjsonschema ==1.1.0.1
- hledger ==1.0.1 - hledger ==1.0.1
- hledger-interest ==1.5 - hledger-interest ==1.5.1
- hledger-lib ==1.0.1 - hledger-lib ==1.0.1
- hlibgit2 ==0.18.0.15 - hlibgit2 ==0.18.0.15
- hlibsass ==0.1.5.0 - hlibsass ==0.1.5.0
@ -941,7 +941,7 @@ default-package-overrides:
- http-common ==0.8.2.0 - http-common ==0.8.2.0
- http-conduit ==2.1.11 - http-conduit ==2.1.11
- http-date ==0.0.6.1 - http-date ==0.0.6.1
- http-link-header ==1.0.2 - http-link-header ==1.0.3
- http-media ==0.6.4 - http-media ==0.6.4
- http-reverse-proxy ==0.4.3.2 - http-reverse-proxy ==0.4.3.2
- http-streams ==0.8.4.0 - http-streams ==0.8.4.0
@ -998,7 +998,7 @@ default-package-overrides:
- intero ==0.1.19 - intero ==0.1.19
- interpolate ==0.1.0 - interpolate ==0.1.0
- interpolatedstring-perl6 ==1.0.0 - interpolatedstring-perl6 ==1.0.0
- IntervalMap ==0.5.1.1 - IntervalMap ==0.5.2.0
- intervals ==0.7.2 - intervals ==0.7.2
- invariant ==0.4 - invariant ==0.4
- io-choice ==0.0.6 - io-choice ==0.0.6
@ -1118,7 +1118,7 @@ default-package-overrides:
- makefile ==0.1.0.5 - makefile ==0.1.0.5
- managed ==1.0.5 - managed ==1.0.5
- mandrill ==0.5.2.3 - mandrill ==0.5.2.3
- markdown ==0.1.15 - markdown ==0.1.16
- markdown-unlit ==0.4.0 - markdown-unlit ==0.4.0
- markup ==3.1.0 - markup ==3.1.0
- math-functions ==0.2.0.2 - math-functions ==0.2.0.2
@ -1152,7 +1152,7 @@ default-package-overrides:
- missing-foreign ==0.1.1 - missing-foreign ==0.1.1
- MissingH ==1.4.0.1 - MissingH ==1.4.0.1
- mmap ==0.5.9 - mmap ==0.5.9
- mmorph ==1.0.6 - mmorph ==1.0.9
- mockery ==0.3.4 - mockery ==0.3.4
- modify-fasta ==0.8.2.1 - modify-fasta ==0.8.2.1
- moesocks ==1.0.0.41 - moesocks ==1.0.0.41
@ -1266,7 +1266,7 @@ default-package-overrides:
- openpgp-asciiarmor ==0.1 - openpgp-asciiarmor ==0.1
- opensource ==0.1.0.0 - opensource ==0.1.0.0
- openssl-streams ==1.2.1.0 - openssl-streams ==1.2.1.0
- operational ==0.2.3.4 - operational ==0.2.3.5
- operational-class ==0.3.0.0 - operational-class ==0.3.0.0
- opml-conduit ==0.5.0.1 - opml-conduit ==0.5.0.1
- optional-args ==1.0.1 - optional-args ==1.0.1
@ -1508,6 +1508,7 @@ default-package-overrides:
- sampling ==0.2.0 - sampling ==0.2.0
- sandi ==0.4.0 - sandi ==0.4.0
- sandman ==0.2.0.1 - sandman ==0.2.0.1
- say ==0.1.0.0
- sbv ==5.12 - sbv ==5.12
- scalpel ==0.3.1 - scalpel ==0.3.1
- scanner ==0.2 - scanner ==0.2
@ -1558,7 +1559,7 @@ default-package-overrides:
- SHA ==1.6.4.2 - SHA ==1.6.4.2
- shake ==0.15.10 - shake ==0.15.10
- shake-language-c ==0.10.0 - shake-language-c ==0.10.0
- shakespeare ==2.0.11.1 - shakespeare ==2.0.11.2
- shell-conduit ==4.5.2 - shell-conduit ==4.5.2
- shelly ==1.6.8.1 - shelly ==1.6.8.1
- shortcut-links ==0.4.2.0 - shortcut-links ==0.4.2.0
@ -1615,7 +1616,7 @@ default-package-overrides:
- spool ==0.1 - spool ==0.1
- spoon ==0.3.1 - spoon ==0.3.1
- sql-words ==0.1.4.1 - sql-words ==0.1.4.1
- sqlite-simple ==0.4.9.0 - sqlite-simple ==0.4.10.0
- srcloc ==0.5.1.0 - srcloc ==0.5.1.0
- stache ==0.1.8 - stache ==0.1.8
- stack-run-auto ==0.1.1.4 - stack-run-auto ==0.1.1.4
@ -1710,13 +1711,13 @@ default-package-overrides:
- terminal-progress-bar ==0.0.1.4 - terminal-progress-bar ==0.0.1.4
- terminal-size ==0.3.2.1 - terminal-size ==0.3.2.1
- terminfo ==0.4.0.2 - terminfo ==0.4.0.2
- test-fixture ==0.4.1.0 - test-fixture ==0.4.2.0
- test-framework ==0.8.1.1 - test-framework ==0.8.1.1
- test-framework-hunit ==0.3.0.2 - test-framework-hunit ==0.3.0.2
- test-framework-quickcheck2 ==0.3.0.3 - test-framework-quickcheck2 ==0.3.0.3
- test-framework-smallcheck ==0.2 - test-framework-smallcheck ==0.2
- test-framework-th ==0.2.4 - test-framework-th ==0.2.4
- test-simple ==0.1.8 - test-simple ==0.1.9
- testing-feat ==0.4.0.3 - testing-feat ==0.4.0.3
- texmath ==0.8.6.7 - texmath ==0.8.6.7
- text ==1.2.2.1 - text ==1.2.2.1
@ -1743,6 +1744,7 @@ default-package-overrides:
- th-printf ==0.3.1 - th-printf ==0.3.1
- th-reify-compat ==0.0.1.1 - th-reify-compat ==0.0.1.1
- th-reify-many ==0.1.6 - th-reify-many ==0.1.6
- th-to-exp ==0.0.1.0
- th-utilities ==0.2.0.1 - th-utilities ==0.2.0.1
- these ==0.7.2 - these ==0.7.2
- threads ==0.5.1.4 - threads ==0.5.1.4
@ -1973,7 +1975,7 @@ default-package-overrides:
- yesod-eventsource ==1.4.0.1 - yesod-eventsource ==1.4.0.1
- yesod-fay ==0.8.0 - yesod-fay ==0.8.0
- yesod-fb ==0.3.4 - yesod-fb ==0.3.4
- yesod-form ==1.4.8 - yesod-form ==1.4.9
- yesod-form-richtext ==0.1.0.0 - yesod-form-richtext ==0.1.0.0
- yesod-gitrepo ==0.2.1.0 - yesod-gitrepo ==0.2.1.0
- yesod-gitrev ==0.1.0.0 - yesod-gitrev ==0.1.0.0

File diff suppressed because it is too large Load Diff

View File

@ -23,8 +23,8 @@
# This will build mmorph and monadControl, and have the hoogle installation # This will build mmorph and monadControl, and have the hoogle installation
# refer to their documentation via symlink so they are not garbage collected. # refer to their documentation via symlink so they are not garbage collected.
{ lib, stdenv, hoogle, writeText { lib, stdenv, hoogle, writeText, ghc
, ghc, packages ? [ ghc.ghc ] , packages
}: }:
let let
@ -51,6 +51,9 @@ let
else writeText "ghcjs-prologue.txt" '' else writeText "ghcjs-prologue.txt" ''
This index includes documentation for many Haskell modules. This index includes documentation for many Haskell modules.
''; '';
docPackages = lib.closePropagation packages;
in in
stdenv.mkDerivation { stdenv.mkDerivation {
name = "hoogle-local-0.1"; name = "hoogle-local-0.1";
@ -58,14 +61,9 @@ stdenv.mkDerivation {
phases = [ "buildPhase" ]; phases = [ "buildPhase" ];
docPackages = (lib.closePropagation packages); inherit docPackages;
buildPhase = '' buildPhase = ''
if [ -z "$docPackages" ]; then
echo "ERROR: The packages attribute has not been set"
exit 1
fi
mkdir -p $out/share/doc/hoogle mkdir -p $out/share/doc/hoogle
echo importing builtin packages echo importing builtin packages

View File

@ -2,12 +2,12 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "luajit-${version}"; name = "luajit-${version}";
version = "2.1.0-beta1"; version = "2.1.0-beta2";
luaversion = "5.1"; luaversion = "5.1";
src = fetchurl { src = fetchurl {
url = "http://luajit.org/download/LuaJIT-${version}.tar.gz"; url = "http://luajit.org/download/LuaJIT-${version}.tar.gz";
sha256 = "06170d38387c59d1292001a166e7f5524f5c5deafa8705a49a46fa42905668dd"; sha256 = "0iyghj1xjlmd9ywa4flf9yszynf3jhbp0yqb9b49k7ab0g528fbi";
}; };
enableParallelBuilding = true; enableParallelBuilding = true;

View File

@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
description = "SDL TrueType library"; description = "SDL TrueType library";
license = licenses.zlib; license = licenses.zlib;
platforms = platforms.all; platforms = platforms.all;
homepage = https://www.libsdl.org/projects/SDL_ttf/release-1.2.html; homepage = "https://www.libsdl.org/projects/SDL_ttf/release-1.2.html";
maintainers = with maintainers; [ abbradar ]; maintainers = with maintainers; [ abbradar ];
}; };
} }

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "cppzmq-${version}"; name = "cppzmq-${version}";
version = "2016-07-18"; version = "2016-11-16";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "zeromq"; owner = "zeromq";
repo = "cppzmq"; repo = "cppzmq";
rev = "92d2af6def80a01b76d5e73f073c439ad00ab757"; rev = "8b52a6ffacce27bac9b81c852b81539a77b0a6e5";
sha256 = "0lnwh314hh5ifad2sa2nz1g1ld1jc4vplm7clyvx304sjjvbvl27"; sha256 = "12accjyjzfw1wqzbj1qn6q99bj5ba05flsvbanyzflr3b4971s4p";
}; };
installPhase = '' installPhase = ''
@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = https://github.com/zeromq/cppzmq; homepage = "https://github.com/zeromq/cppzmq";
license = licenses.bsd2; license = licenses.bsd2;
description = "C++ binding for 0MQ"; description = "C++ binding for 0MQ";
maintainers = with maintainers; [ abbradar ]; maintainers = with maintainers; [ abbradar ];

View File

@ -1,8 +1,8 @@
{ stdenv, fetchFromGitHub, cmake }: { stdenv, fetchFromGitHub, cmake }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "2.0.1";
name = "double-conversion-${version}"; name = "double-conversion-${version}";
version = "2.0.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "google"; owner = "google";
@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Binary-decimal and decimal-binary routines for IEEE doubles"; description = "Binary-decimal and decimal-binary routines for IEEE doubles";
homepage = https://github.com/google/double-conversion; homepage = "https://github.com/google/double-conversion";
license = licenses.bsd3; license = licenses.bsd3;
platforms = platforms.unix; platforms = platforms.unix;
maintainers = with maintainers; [ abbradar ]; maintainers = with maintainers; [ abbradar ];

View File

@ -3,13 +3,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "folly-${version}"; name = "folly-${version}";
version = "2016.08.08.00"; version = "2016.11.21.00";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "facebook"; owner = "facebook";
repo = "folly"; repo = "folly";
rev = "v${version}"; rev = "v${version}";
sha256 = "0f9xdi8w2mbn6gxjfvpzh8i22ca8p11a2ss6qkw31yhdgd3s9087"; sha256 = "1f7j73avj00mmzz8wyh9rl1k9i0cvk77d0nf9c80vzr2zfk9f31x";
}; };
nativeBuildInputs = [ autoreconfHook python pkgconfig ]; nativeBuildInputs = [ autoreconfHook python pkgconfig ];
@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "An open-source C++ library developed and used at Facebook"; description = "An open-source C++ library developed and used at Facebook";
homepage = https://github.com/facebook/folly; homepage = "https://github.com/facebook/folly";
license = licenses.asl20; license = licenses.asl20;
# 32bit is not supported: https://github.com/facebook/folly/issues/103 # 32bit is not supported: https://github.com/facebook/folly/issues/103
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];

View File

@ -2,16 +2,19 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "giblib-1.2.4"; name = "giblib-1.2.4";
src = fetchurl { src = fetchurl {
url = "http://linuxbrit.co.uk/downloads/${name}.tar.gz"; url = "http://linuxbrit.co.uk/downloads/${name}.tar.gz";
sha256 = "1b4bmbmj52glq0s898lppkpzxlprq9aav49r06j2wx4dv3212rhp"; sha256 = "1b4bmbmj52glq0s898lppkpzxlprq9aav49r06j2wx4dv3212rhp";
}; };
buildInputs = [xlibsWrapper imlib2]; buildInputs = [ xlibsWrapper ];
propagatedBuildInputs = [ imlib2 ];
meta = { meta = {
homepage = http://linuxbrit.co.uk/giblib/; homepage = http://linuxbrit.co.uk/giblib/;
description = "wrapper library for imlib2, and other stuff";
platforms = stdenv.lib.platforms.unix; platforms = stdenv.lib.platforms.unix;
license = stdenv.lib.licenses.mit;
}; };
} }

View File

@ -1,4 +1,8 @@
{ stdenv, fetchurl, xlibsWrapper, libjpeg, libtiff, giflib, libpng, bzip2, pkgconfig }: { stdenv, fetchurl, libjpeg, libtiff, giflib, libpng, bzip2, pkgconfig
, freetype
, x11Support ? true, xlibsWrapper ? null }:
with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "imlib2-1.4.9"; name = "imlib2-1.4.9";
@ -8,7 +12,8 @@ stdenv.mkDerivation rec {
sha256 = "08809xxk2555yj6glixzw9a0x3x8cx55imd89kj3r0h152bn8a3x"; sha256 = "08809xxk2555yj6glixzw9a0x3x8cx55imd89kj3r0h152bn8a3x";
}; };
buildInputs = [ xlibsWrapper libjpeg libtiff giflib libpng bzip2 ]; buildInputs = [ libjpeg libtiff giflib libpng bzip2 freetype ]
++ optional x11Support xlibsWrapper;
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];
@ -21,7 +26,14 @@ stdenv.mkDerivation rec {
# Do not build amd64 assembly code on Darwin, because it fails to compile # Do not build amd64 assembly code on Darwin, because it fails to compile
# with unknow directive errors # with unknow directive errors
configureFlags = if stdenv.isDarwin then [ "--enable-amd64=no" ] else null; configureFlags = optional stdenv.isDarwin "--enable-amd64=no"
++ optional (!x11Support) "--without-x";
outputs = [ "out" "bin" "dev" ];
postInstall = ''
moveToOutput bin/imlib2-config "$dev"
'';
meta = { meta = {
description = "Image manipulation library"; description = "Image manipulation library";
@ -34,8 +46,8 @@ stdenv.mkDerivation rec {
easily, without sacrificing speed. easily, without sacrificing speed.
''; '';
license = stdenv.lib.licenses.free; license = licenses.free;
platforms = stdenv.lib.platforms.unix; platforms = platforms.unix;
maintainers = with stdenv.lib.maintainers; [ spwhitt ]; maintainers = with maintainers; [ spwhitt ];
}; };
} }

View File

@ -7,15 +7,12 @@
# http://vlc-bluray.whoknowsmy.name/ # http://vlc-bluray.whoknowsmy.name/
# https://wiki.archlinux.org/index.php/BluRay # https://wiki.archlinux.org/index.php/BluRay
let baseName = "libaacs"; stdenv.mkDerivation rec {
version = "0.8.1"; name = "libaacs-${version}";
in version = "0.8.1";
stdenv.mkDerivation {
name = "${baseName}-${version}";
src = fetchurl { src = fetchurl {
url = "http://get.videolan.org/${baseName}/${version}/${baseName}-${version}.tar.bz2"; url = "http://get.videolan.org/libaacs/${version}/${name}.tar.bz2";
sha256 = "1s5v075hnbs57995r6lljm79wgrip3gnyf55a0y7bja75jh49hwm"; sha256 = "1s5v075hnbs57995r6lljm79wgrip3gnyf55a0y7bja75jh49hwm";
}; };
@ -24,7 +21,7 @@ stdenv.mkDerivation {
nativeBuildInputs = [ yacc flex ]; nativeBuildInputs = [ yacc flex ];
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = https://www.videolan.org/developers/libaacs.html; homepage = "https://www.videolan.org/developers/libaacs.html";
description = "Library to access AACS protected Blu-Ray disks"; description = "Library to access AACS protected Blu-Ray disks";
license = licenses.lgpl21; license = licenses.lgpl21;
maintainers = with maintainers; [ abbradar ]; maintainers = with maintainers; [ abbradar ];

View File

@ -10,11 +10,11 @@ assert xarSupport -> libxml2 != null;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "libarchive-${version}"; name = "libarchive-${version}";
version = "3.2.1"; version = "3.2.2";
src = fetchurl { src = fetchurl {
url = "${meta.homepage}/downloads/${name}.tar.gz"; url = "${meta.homepage}/downloads/${name}.tar.gz";
sha256 = "1lngng84k1kkljl74q0cdqc3s82vn2kimfm02dgm4d6m7x71mvkj"; sha256 = "03q6y428rg723c9fj1vidzjw46w1vf8z0h95lkvz1l9jw571j739";
}; };
outputs = [ "out" "lib" "dev" ]; outputs = [ "out" "lib" "dev" ];

View File

@ -7,16 +7,12 @@
# http://vlc-bluray.whoknowsmy.name/ # http://vlc-bluray.whoknowsmy.name/
# https://wiki.archlinux.org/index.php/BluRay # https://wiki.archlinux.org/index.php/BluRay
stdenv.mkDerivation rec {
let baseName = "libbdplus"; name = "libbdplus-${version}";
version = "0.1.2"; version = "0.1.2";
in
stdenv.mkDerivation {
name = "${baseName}-${version}";
src = fetchurl { src = fetchurl {
url = "http://get.videolan.org/${baseName}/${version}/${baseName}-${version}.tar.bz2"; url = "http://get.videolan.org/libbdplus/${version}/${name}.tar.bz2";
sha256 = "02n87lysqn4kg2qk7d1ffrp96c44zkdlxdj0n16hbgrlrpiwlcd6"; sha256 = "02n87lysqn4kg2qk7d1ffrp96c44zkdlxdj0n16hbgrlrpiwlcd6";
}; };
@ -25,7 +21,7 @@ stdenv.mkDerivation {
nativeBuildInputs = [ ]; nativeBuildInputs = [ ];
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = http://www.videolan.org/developers/libbdplus.html; homepage = "http://www.videolan.org/developers/libbdplus.html";
description = "Library to access BD+ protected Blu-Ray disks"; description = "Library to access BD+ protected Blu-Ray disks";
license = licenses.lgpl21; license = licenses.lgpl21;
maintainers = with maintainers; [ abbradar ]; maintainers = with maintainers; [ abbradar ];

View File

@ -18,12 +18,11 @@ assert withFonts -> freetype != null;
# https://wiki.archlinux.org/index.php/BluRay # https://wiki.archlinux.org/index.php/BluRay
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
baseName = "libbluray"; name = "libbluray-${version}";
version = "0.9.2"; version = "0.9.2";
name = "${baseName}-${version}";
src = fetchurl { src = fetchurl {
url = "http://get.videolan.org/${baseName}/${version}/${name}.tar.bz2"; url = "http://get.videolan.org/libbluray/${version}/${name}.tar.bz2";
sha256 = "1sp71j4agcsg17g6b85cqz78pn5vknl5pl39rvr6mkib5ps99jgg"; sha256 = "1sp71j4agcsg17g6b85cqz78pn5vknl5pl39rvr6mkib5ps99jgg";
}; };
@ -55,7 +54,7 @@ stdenv.mkDerivation rec {
patches = stdenv.lib.optional withJava ./BDJ-JARFILE-path.patch; patches = stdenv.lib.optional withJava ./BDJ-JARFILE-path.patch;
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = http://www.videolan.org/developers/libbluray.html; homepage = "http://www.videolan.org/developers/libbluray.html";
description = "Library to access Blu-Ray disks for video playback"; description = "Library to access Blu-Ray disks for video playback";
license = licenses.lgpl21; license = licenses.lgpl21;
maintainers = [ maintainers.abbradar ]; maintainers = [ maintainers.abbradar ];

View File

@ -2,15 +2,15 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "libburn-${version}"; name = "libburn-${version}";
version = "1.4.4"; version = "1.4.6";
src = fetchurl { src = fetchurl {
url = "http://files.libburnia-project.org/releases/${name}.tar.gz"; url = "http://files.libburnia-project.org/releases/${name}.tar.gz";
sha256 = "053x1sj6r5pj5396g007v6l0s7942cy2mh5fd3caqx0jdw6h9xqv"; sha256 = "0wbh49s3az3sfpai09z1zdgynq7wnwrk31v5589033274nmzldlx";
}; };
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = http://libburnia-project.org/; homepage = "http://libburnia-project.org/";
description = "A library by which preformatted data get onto optical media: CD, DVD, BD (Blu-Ray)"; description = "A library by which preformatted data get onto optical media: CD, DVD, BD (Blu-Ray)";
license = licenses.gpl2Plus; license = licenses.gpl2Plus;
maintainers = with maintainers; [ abbradar vrthra ]; maintainers = with maintainers; [ abbradar vrthra ];

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, autoreconfHook, openssl, findutils }: { stdenv, fetchurl, openssl, findutils }:
let version = "2.0.22"; in let version = "2.0.22"; in
stdenv.mkDerivation { stdenv.mkDerivation {
@ -12,7 +12,6 @@ stdenv.mkDerivation {
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];
outputBin = "dev"; outputBin = "dev";
nativeBuildInputs = [ autoreconfHook ];
buildInputs = [ openssl ] ++ stdenv.lib.optional stdenv.isCygwin findutils; buildInputs = [ openssl ] ++ stdenv.lib.optional stdenv.isCygwin findutils;
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -2,18 +2,18 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "libisofs-${version}"; name = "libisofs-${version}";
version = "1.4.4"; version = "1.4.6";
src = fetchurl { src = fetchurl {
url = "http://files.libburnia-project.org/releases/${name}.tar.gz"; url = "http://files.libburnia-project.org/releases/${name}.tar.gz";
sha256 = "1zdx56k847c80ds5yf40hh0a26lkqrc0v11r589dqlm6xvzg0614"; sha256 = "02m5g6lbmmkh2xc5xzq5zaf3ma6v31gls66aj886b3cq9qw0paql";
}; };
buildInputs = [ attr zlib ]; buildInputs = [ attr zlib ];
propagatedBuildInputs = [ acl ]; propagatedBuildInputs = [ acl ];
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = http://libburnia-project.org/; homepage = "http://libburnia-project.org/";
description = "A library to create an ISO-9660 filesystem with extensions like RockRidge or Joliet"; description = "A library to create an ISO-9660 filesystem with extensions like RockRidge or Joliet";
license = licenses.gpl2Plus; license = licenses.gpl2Plus;
maintainers = with maintainers; [ abbradar vrthra ]; maintainers = with maintainers; [ abbradar vrthra ];

View File

@ -1,4 +1,5 @@
{ stdenv, fetchFromGitHub, pkgconfig, cmake, zlib, glib }: { stdenv, lib, fetchFromGitHub, pkgconfig, cmake
, dbus, networkmanager, spidermonkey_1_8_5 }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "libproxy-${version}"; name = "libproxy-${version}";
@ -14,9 +15,8 @@ stdenv.mkDerivation rec {
outputs = [ "out" "dev" ]; # to deal with propagatedBuildInputs outputs = [ "out" "dev" ]; # to deal with propagatedBuildInputs
nativeBuildInputs = [ pkgconfig cmake ]; nativeBuildInputs = [ pkgconfig cmake ];
propagatedBuildInputs = [ zlib ]
# now some optional deps, but many more are possible buildInputs = [ dbus networkmanager spidermonkey_1_8_5 ];
++ [ glib ];
meta = with stdenv.lib; { meta = with stdenv.lib; {
platforms = platforms.linux; platforms = platforms.linux;

View File

@ -1,15 +1,14 @@
{ stdenv, fetchurl, fetchpatch, pkgconfig, zlib, libjpeg, xz }: { stdenv, fetchurl, fetchpatch, pkgconfig, zlib, libjpeg, xz }:
let let
version = "4.0.6"; version = "4.0.7";
debversion = "3";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "libtiff-${version}"; name = "libtiff-${version}";
src = fetchurl { src = fetchurl {
url = "http://download.osgeo.org/libtiff/tiff-${version}.tar.gz"; url = "http://download.osgeo.org/libtiff/tiff-${version}.tar.gz";
sha256 = "136nf1rj9dp5jgv1p7z4dk0xy3wki1w0vfjbk82f645m0w4samsd"; sha256 = "06ghqhr4db1ssq0acyyz49gr8k41gzw6pqb6mbn5r7jqp77s4hwz";
}; };
outputs = [ "bin" "dev" "out" "doc" ]; outputs = [ "bin" "dev" "out" "doc" ];
@ -20,54 +19,11 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true; enableParallelBuilding = true;
patches = let p = "https://sources.debian.net/data/main/t/tiff/${version}-${debversion}/debian/patches"; in [
(fetchurl {
url = "${p}/01-CVE-2015-8665_and_CVE-2015-8683.patch";
sha256 = "0qiiqpbbsf01b59x01z38cg14pmg1ggcsqm9n1gsld6rr5wm3ryz";
})
(fetchurl {
url = "${p}/02-fix_potential_out-of-bound_writes_in_decode_functions.patch";
sha256 = "1ph057w302i2s94rhdw6ksyvpsmg1nlanvc0251x01s23gkdbakv";
})
(fetchurl {
url = "${p}/03-fix_potential_out-of-bound_write_in_NeXTDecode.patch";
sha256 = "1nhjg2gdvyzi4wa2g7nwmzm7nssz9dpdfkwms1rp8i1034qdlgc6";
})
(fetchurl {
url = "${p}/04-CVE-2016-5314_CVE-2016-5316_CVE-2016-5320_CVE-2016-5875.patch";
sha256 = "0n47yk9wcvc9j72yvm5bhpaqq0yfz8jnq9zxbnzx5id9gdxmrkn3";
})
(fetchurl {
url = "${p}/05-CVE-2016-6223.patch";
sha256 = "0r80hil9k6scdjppgyljhm0s2z6c8cm259f0ic0xvxidfaim6g2r";
})
(fetchurl {
url = "${p}/06-CVE-2016-5321.patch";
sha256 = "1aacymlqv6cam8i4nbma9v05r3v3xjpagns7q0ii268h0mhzq6qg";
})
(fetchurl {
url = "${p}/07-CVE-2016-5323.patch";
sha256 = "1xr5hy2fxa71j3fcc1l998pxyblv207ygzyhibwb1lia5zjgblch";
})
(fetchurl {
url = "${p}/08-CVE-2016-3623_CVE-2016-3624.patch";
sha256 = "1xnvwjvgyxi387h1sdiyp4360a3176jmipb7ghm8vwiz7cisdn9z";
})
(fetchurl {
url = "${p}/09-CVE-2016-5652.patch";
sha256 = "1yqfq32gzh21ab2jfqkq13gaz0nin0492l06adzsyhr5brvdhnx8";
})
(fetchurl {
url = "${p}/10-CVE-2016-3658.patch";
sha256 = "01kb8rfk30fgjf1hy0m088yhjfld1yyh4bk3gkg8jx3dl9bd076d";
})
];
doCheck = true; doCheck = true;
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Library and utilities for working with the TIFF image file format"; description = "Library and utilities for working with the TIFF image file format";
homepage = http://www.remotesensing.org/libtiff/; homepage = http://download.osgeo.org/libtiff;
license = licenses.libtiff; license = licenses.libtiff;
platforms = platforms.unix; platforms = platforms.unix;
}; };

View File

@ -3,20 +3,20 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "libvdpau-va-gl-${version}"; name = "libvdpau-va-gl-${version}";
version = "0.4.0"; version = "0.4.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "i-rinat"; owner = "i-rinat";
repo = "libvdpau-va-gl"; repo = "libvdpau-va-gl";
rev = "v${version}"; rev = "v${version}";
sha256 = "1y511jxs0df1fqzjcvb6zln7nbmchv1g6z3lw0z9nsf64ziycj8k"; sha256 = "0asndybfv8xb0fx73sjjw5kydqrahqkm6n04lh589pbf18s5qlld";
}; };
nativeBuildInputs = [ cmake pkgconfig ]; nativeBuildInputs = [ cmake pkgconfig ];
buildInputs = [ libX11 libpthreadstubs libXau libXdmcp libXext libvdpau glib libva ffmpeg mesa_glu ]; buildInputs = [ libX11 libpthreadstubs libXau libXdmcp libXext libvdpau glib libva ffmpeg mesa_glu ];
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = https://github.com/i-rinat/libvdpau-va-gl; homepage = "https://github.com/i-rinat/libvdpau-va-gl";
description = "VDPAU driver with OpenGL/VAAPI backend"; description = "VDPAU driver with OpenGL/VAAPI backend";
license = licenses.lgpl3; license = licenses.lgpl3;
platforms = platforms.linux; platforms = platforms.linux;

View File

@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Extract Cell Data From Excel xls files"; description = "Extract Cell Data From Excel xls files";
homepage = http://sourceforge.net/projects/libxls/; homepage = "http://sourceforge.net/projects/libxls/";
license = licenses.bsd2; license = licenses.bsd2;
platforms = platforms.unix; platforms = platforms.unix;
maintainers = with maintainers; [ abbradar ]; maintainers = with maintainers; [ abbradar ];

View File

@ -95,7 +95,7 @@ stdenv.mkDerivation rec {
(opencvFlag "CUDA" enableCuda) (opencvFlag "CUDA" enableCuda)
(opencvFlag "CUBLAS" enableCuda) (opencvFlag "CUBLAS" enableCuda)
] ++ lib.optionals enableContrib [ "-DOPENCV_EXTRA_MODULES_PATH=${contribSrc}/modules" ] ] ++ lib.optionals enableContrib [ "-DOPENCV_EXTRA_MODULES_PATH=${contribSrc}/modules" ]
++ lib.optionals enableCuda [ "-DCUDA_FAST_MATH=ON" ]; ++ lib.optionals enableCuda [ "-DCUDA_FAST_MATH=ON" ];
enableParallelBuilding = true; enableParallelBuilding = true;

View File

@ -2,7 +2,9 @@
, perl, makeWrapper }: , perl, makeWrapper }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "opendkim-2.10.3"; name = "opendkim-${version}";
version = "2.10.3";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/opendkim/files/${name}.tar.gz"; url = "mirror://sourceforge/opendkim/files/${name}.tar.gz";
sha256 = "06v8bqhh604sz9rh5bvw278issrwjgc4h1wx2pz9a84lpxbvm823"; sha256 = "06v8bqhh604sz9rh5bvw278issrwjgc4h1wx2pz9a84lpxbvm823";
@ -21,7 +23,7 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "C library for producing DKIM-aware applications and an open source milter for providing DKIM service"; description = "C library for producing DKIM-aware applications and an open source milter for providing DKIM service";
homepage = http://www.opendkim.org/; homepage = "http://www.opendkim.org/";
maintainers = with maintainers; [ abbradar ]; maintainers = with maintainers; [ abbradar ];
license = licenses.bsd3; license = licenses.bsd3;
platforms = platforms.unix; platforms = platforms.unix;

View File

@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true; enableParallelBuilding = true;
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = http://qpdf.sourceforge.net/; homepage = "http://qpdf.sourceforge.net/";
description = "A C++ library and set of programs that inspect and manipulate the structure of PDF files"; description = "A C++ library and set of programs that inspect and manipulate the structure of PDF files";
license = licenses.artistic2; license = licenses.artistic2;
maintainers = with maintainers; [ abbradar ]; maintainers = with maintainers; [ abbradar ];

View File

@ -1,3 +1,3 @@
WGET_ARGS=( http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/ \ WGET_ARGS=( http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/ \
http://download.qt.io/community_releases/5.6/5.6.1/ \ http://download.qt.io/community_releases/5.6/5.6.2/ \
-A '*.tar.xz' ) -A '*.tar.xz' )

View File

@ -115,7 +115,6 @@ stdenv.mkDerivation {
-widgets -widgets
-opengl desktop -opengl desktop
-qml-debug -qml-debug
-nis
-iconv -iconv
-icu -icu
-pch -pch

View File

@ -1,269 +1,261 @@
# DO NOT EDIT! This file is generated automatically by manifest.sh # DO NOT EDIT! This file is generated automatically by fetch-kde-qt.sh
{ fetchurl, mirror }: { fetchurl, mirror }:
{ {
qtwebkit = {
version = "5.6.1";
src = fetchurl {
url = "${mirror}/community_releases/5.6/5.6.1/qtwebkit-opensource-src-5.6.1.tar.xz";
sha256 = "1akjqvjavl0vn8a8hnmvqc26mf4ljvwjdm07x6dmmdnjzajvzkzm";
name = "qtwebkit-opensource-src-5.6.1.tar.xz";
};
};
qt3d = { qt3d = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qt3d-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qt3d-opensource-src-5.6.2.tar.xz";
sha256 = "1nxpcjsarcp40m4y18kyy9a5md56wnafll03j8c6q19rba9bcwbf"; sha256 = "0hg91j3brsbh75why6j0527z5myk1r9s7q9z45q6qp0gdvdqc5x2";
name = "qt3d-opensource-src-5.6.1-1.tar.xz"; name = "qt3d-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtactiveqt = { qtactiveqt = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtactiveqt-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtactiveqt-opensource-src-5.6.2.tar.xz";
sha256 = "00bj9c0x3ax34gpibaap3wpchkv4wapsydiz01fb0xzs1fy94nbf"; sha256 = "1a3mai3d0l2a8gyjkjng1r7y9y27yppxc5rdzxsgc4kq58rflghw";
name = "qtactiveqt-opensource-src-5.6.1-1.tar.xz"; name = "qtactiveqt-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtandroidextras = { qtandroidextras = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtandroidextras-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtandroidextras-opensource-src-5.6.2.tar.xz";
sha256 = "0xhm4053y9hqnz5y3y4rwycniq0mb1al1rds3jx636211y039xhk"; sha256 = "164mkmzswqwjzhs9cwdq361yb60bx6is37740jglrjxgss1phmhr";
name = "qtandroidextras-opensource-src-5.6.1-1.tar.xz"; name = "qtandroidextras-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtbase = { qtbase = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtbase-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtbase-opensource-src-5.6.2.tar.xz";
sha256 = "0fbwprlhqmdyhh2wb9122fcpq7pbil530iak482b9sy5gqs7i5ij"; sha256 = "11z73qgzbyj1cwjdkng94cz46wam8frsw0bs705gx0nrqn9swvig";
name = "qtbase-opensource-src-5.6.1-1.tar.xz"; name = "qtbase-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtcanvas3d = { qtcanvas3d = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtcanvas3d-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtcanvas3d-opensource-src-5.6.2.tar.xz";
sha256 = "13127xws6xfkkk1x617bgdzl96l66nd0v82dibdnxnpfa702rl44"; sha256 = "1bd01ag2p1445ffckyyi3sxi4vssflp95kmbrj99dy83dc04sn6p";
name = "qtcanvas3d-opensource-src-5.6.1-1.tar.xz"; name = "qtcanvas3d-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtconnectivity = { qtconnectivity = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtconnectivity-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtconnectivity-opensource-src-5.6.2.tar.xz";
sha256 = "0sr6sxp0q45pacs25knr28139xdrphcjgrwlksdhdpsryfw19mzi"; sha256 = "1ygdmd7fh2fhhyv58zxl1lglr85iajs9gv6c0pv64gbhw0ijjrqv";
name = "qtconnectivity-opensource-src-5.6.1-1.tar.xz"; name = "qtconnectivity-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtdeclarative = { qtdeclarative = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtdeclarative-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtdeclarative-opensource-src-5.6.2.tar.xz";
sha256 = "094gx5mzqzcga97y7ihf052b6i5iv512lh7m0702m5q94nsn1pqw"; sha256 = "1nh989jp2gdp5bxa62n3g1whs2pzrl44sh4ca6x9icrnpj3ak1h0";
name = "qtdeclarative-opensource-src-5.6.1-1.tar.xz"; name = "qtdeclarative-opensource-src-5.6.2.tar.xz";
};
};
qtdeclarative-render2d = {
version = "5.6.1-1";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtdeclarative-render2d-opensource-src-5.6.1-1.tar.xz";
sha256 = "0kqmb3792rg9fx12m64x87ahcrh0g9krg77mv0ssx3g4gvsgcibc";
name = "qtdeclarative-render2d-opensource-src-5.6.1-1.tar.xz";
}; };
}; };
qtdoc = { qtdoc = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtdoc-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtdoc-opensource-src-5.6.2.tar.xz";
sha256 = "1yf3g3h72ndrp88h8g21mzgqdz2ixwkvpav03i3jnrgy2pf7nssp"; sha256 = "0s78c5bpj4lcx63x2y5a6scxv6sszvs4dlj4qy86jkwmm7m1wsgn";
name = "qtdoc-opensource-src-5.6.1-1.tar.xz"; name = "qtdoc-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtenginio = { qtenginio = {
version = "1.6.1"; version = "1.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtenginio-opensource-src-1.6.1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtenginio-opensource-src-1.6.2.tar.xz";
sha256 = "17hsrhzy9zdvpbzja45aac6jr7jzzjl206vma96b9w73rbgxa50f"; sha256 = "1hywpl1x9lbpqqjdw5wwwhx0gg0j7y260iqaz47anxaa466w7zwh";
name = "qtenginio-opensource-src-1.6.1.tar.xz"; name = "qtenginio-opensource-src-1.6.2.tar.xz";
}; };
}; };
qtgraphicaleffects = { qtgraphicaleffects = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtgraphicaleffects-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtgraphicaleffects-opensource-src-5.6.2.tar.xz";
sha256 = "0560800fa9sd6dw1vk0ia9vq8ywdrwch2cpsi1vmh4iyxgwfr71b"; sha256 = "0pp71gqfgbl5ra15jp8kr4p3sl9gs7cv4x6vjv9i5a3j5jn0z7qy";
name = "qtgraphicaleffects-opensource-src-5.6.1-1.tar.xz"; name = "qtgraphicaleffects-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtimageformats = { qtimageformats = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtimageformats-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtimageformats-opensource-src-5.6.2.tar.xz";
sha256 = "1p98acvsm3azka2by1ph4gdb31qbnndrr5k5wns4xk2d760y8ifc"; sha256 = "1r27s5dy9c016ia5xgpbs7nfvmmrnd051dmsrv5r7hyscaz57cag";
name = "qtimageformats-opensource-src-5.6.1-1.tar.xz"; name = "qtimageformats-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtlocation = { qtlocation = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtlocation-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtlocation-opensource-src-5.6.2.tar.xz";
sha256 = "0my4pbcxa58yzvdh65l5qx99ln03chjr5c3ml5v37wfk7nx23k69"; sha256 = "0fnj51f6fll1z1xsfp3g73al70hsg993gh1k7aa0y8nhdqh9b2bs";
name = "qtlocation-opensource-src-5.6.1-1.tar.xz"; name = "qtlocation-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtmacextras = { qtmacextras = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtmacextras-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtmacextras-opensource-src-5.6.2.tar.xz";
sha256 = "07j26d5g7av4c6alggg5hssqpvdh555zmn1cpr8xrhx1hpbdnaas"; sha256 = "05chq7dqgvlfzpqf1y9inxp0kx6hfzwbc5kswpp6gsnsyfln6ll5";
name = "qtmacextras-opensource-src-5.6.1-1.tar.xz"; name = "qtmacextras-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtmultimedia = { qtmultimedia = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtmultimedia-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtmultimedia-opensource-src-5.6.2.tar.xz";
sha256 = "0paffx0614ivjbf87lr9klpbqik6r1pzbc14l41np6d9jv3dqa2f"; sha256 = "1bwcpc1s6yjvgpqbn22k4mdfjy9lhs89bbzwlgj5psy0qskp16nb";
name = "qtmultimedia-opensource-src-5.6.1-1.tar.xz"; name = "qtmultimedia-opensource-src-5.6.2.tar.xz";
};
};
qtquickcontrols2 = {
version = "5.6.1-1";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtquickcontrols2-opensource-src-5.6.1-1.tar.xz";
sha256 = "0wfa2xcqsvx3zihd5nb9f9qhq0xn14c03sw1qdymzfsryqwmk4ac";
name = "qtquickcontrols2-opensource-src-5.6.1-1.tar.xz";
}; };
}; };
qtquickcontrols = { qtquickcontrols = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtquickcontrols-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtquickcontrols-opensource-src-5.6.2.tar.xz";
sha256 = "0cjzf844r7wi32ssc9vbw1a2m9hnr8c0i1p7yyljy962ifplf401"; sha256 = "0b0h8svlzvq23kcmam7ng697bzcq4x3haymmn7gj40p15clz5l2y";
name = "qtquickcontrols-opensource-src-5.6.1-1.tar.xz"; name = "qtquickcontrols-opensource-src-5.6.2.tar.xz";
};
};
qtquickcontrols2 = {
version = "5.6.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtquickcontrols2-opensource-src-5.6.2.tar.xz";
sha256 = "1hgydll95by0rvfpv3sprxq0hkdrpacynaaq2jzaw0a7m881gp09";
name = "qtquickcontrols2-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtscript = { qtscript = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtscript-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtscript-opensource-src-5.6.2.tar.xz";
sha256 = "1gini9483flqa9q4a4bl81bh7g5s408bycqykqhgbklmfd29y5lx"; sha256 = "03hi2j64l0mgs8p0w1jaz53zsa4lfpbgskydaxxiiqnaf6rgcvp0";
name = "qtscript-opensource-src-5.6.1-1.tar.xz"; name = "qtscript-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtsensors = { qtsensors = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtsensors-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtsensors-opensource-src-5.6.2.tar.xz";
sha256 = "0kcrvf6vzn6g2v2m70f9r3raalzmfp48rwjlqhss3w84jfz3y04r"; sha256 = "09rl0njijl3cgh6l3pfij2rhnsg10axkl37llkbz1wmlma0r1057";
name = "qtsensors-opensource-src-5.6.1-1.tar.xz"; name = "qtsensors-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtserialbus = { qtserialbus = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtserialbus-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtserialbus-opensource-src-5.6.2.tar.xz";
sha256 = "0li4g70s5vfb517ag0d6405ymsknvvny1c8x66w7qs8a8mnk1jq5"; sha256 = "09pqr9f6kl3wq4858vksbzxnrrnqxblivmayjf126lwi2q4n14mk";
name = "qtserialbus-opensource-src-5.6.1-1.tar.xz"; name = "qtserialbus-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtserialport = { qtserialport = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtserialport-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtserialport-opensource-src-5.6.2.tar.xz";
sha256 = "135cbgghxk0c6dblmyyrw6znfb9m8sac9hhyc2dm6vq7vzy8id52"; sha256 = "0xpkjkn6w0g3p7hmm12b2c96f7q98rmk2dcn321x4arcmldjhxmg";
name = "qtserialport-opensource-src-5.6.1-1.tar.xz"; name = "qtserialport-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtsvg = { qtsvg = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtsvg-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtsvg-opensource-src-5.6.2.tar.xz";
sha256 = "1w0jvhgaiddafcms2nv8wl1klg07lncmjwm1zhdw3l6rxi9071sw"; sha256 = "0kmwr3fphs7ddgxmqzy53f8p2hbp1gfmjdaig5vswc8vcszn38zp";
name = "qtsvg-opensource-src-5.6.1-1.tar.xz"; name = "qtsvg-opensource-src-5.6.2.tar.xz";
}; };
}; };
qttools = { qttools = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qttools-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qttools-opensource-src-5.6.2.tar.xz";
sha256 = "0haic027a2d7p7k8xz83fbvci4a4dln34360rlwgy7hlyy5m4nip"; sha256 = "1dz1i5wwhgb9li095mnmc33mwpbd8nf7sdrc2x3pl9c6hwqv8ayv";
name = "qttools-opensource-src-5.6.1-1.tar.xz"; name = "qttools-opensource-src-5.6.2.tar.xz";
}; };
}; };
qttranslations = { qttranslations = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qttranslations-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qttranslations-opensource-src-5.6.2.tar.xz";
sha256 = "03sdzci4pgq6lmxwn25v8x0z5x8g7zgpq2as56dqgj7vp6cvhn8m"; sha256 = "08d4xyk7njkdbd3m48dzmvdm8ma3s4x8h4jm1ip20wqngi23nybx";
name = "qttranslations-opensource-src-5.6.1-1.tar.xz"; name = "qttranslations-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtwayland = { qtwayland = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtwayland-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtwayland-opensource-src-5.6.2.tar.xz";
sha256 = "1fnvgpi49ilds3ah9iizxj9qhhb5rnwqd9h03bhkwf0ydywv52c4"; sha256 = "11kciqnqfyzjfnx1m666g35v98jdazsg083h9fv2g5kiyjck2p03";
name = "qtwayland-opensource-src-5.6.1-1.tar.xz"; name = "qtwayland-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtwebchannel = { qtwebchannel = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtwebchannel-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtwebchannel-opensource-src-5.6.2.tar.xz";
sha256 = "10kys3ppjkj60fs1s335fdcpdsbxsjn6ibvm6zph9gqbncabd2l7"; sha256 = "0lhskzqcijz9x6h8p80ff5dd6ni7zqm23nzljdqbggaibzpzs3kh";
name = "qtwebchannel-opensource-src-5.6.1-1.tar.xz"; name = "qtwebchannel-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtwebengine = { qtwebengine = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtwebengine-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtwebengine-opensource-src-5.6.2.tar.xz";
sha256 = "0k708a34zwkj6hwx3vv5kdvnv3lfgb0iad44zaim5gdpgcir03n8"; sha256 = "0h4pyc7r2fx8qsiw3663jd1hg1fid5yv7wil06njpcm8w541c2ig";
name = "qtwebengine-opensource-src-5.6.1-1.tar.xz"; name = "qtwebengine-opensource-src-5.6.2.tar.xz";
};
};
qtwebkit = {
version = "5.6.2";
src = fetchurl {
url = "${mirror}/community_releases/5.6/5.6.2/qtwebkit-opensource-src-5.6.2.tar.xz";
sha256 = "0rirszy092pmdvy4vzqkk4p9wwxv8qx4zkp84rxkd5ah3j5np2jj";
name = "qtwebkit-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtwebsockets = { qtwebsockets = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtwebsockets-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtwebsockets-opensource-src-5.6.2.tar.xz";
sha256 = "1fz0x8570zxc00a22skd848svma3p2g3xyxj14jq10559jihqqil"; sha256 = "0ddsnnp3sn423ryqqa1060cqlbdcp7ncj3zhabifaswfzyxx9n9w";
name = "qtwebsockets-opensource-src-5.6.1-1.tar.xz"; name = "qtwebsockets-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtwebview = { qtwebview = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtwebview-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtwebview-opensource-src-5.6.2.tar.xz";
sha256 = "19954snfw073flxn0qk5ayxyzk5x6hwhpg4kn4nrl1zygsw3y49l"; sha256 = "1mjix4w71x1w86ykcdhsl7gg7xv9dn2pw6yiaxrp6pxvvk73cyjs";
name = "qtwebview-opensource-src-5.6.1-1.tar.xz"; name = "qtwebview-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtwinextras = { qtwinextras = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtwinextras-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtwinextras-opensource-src-5.6.2.tar.xz";
sha256 = "03zkwqrix2nfqkwfn8lsrpgahzx1hv6p1qbvhkqymzakkzjjncgg"; sha256 = "1s375b1bf8cqs73mg8chwvj0npr01hpyrwv75srqnxkp61avi1gr";
name = "qtwinextras-opensource-src-5.6.1-1.tar.xz"; name = "qtwinextras-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtx11extras = { qtx11extras = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtx11extras-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtx11extras-opensource-src-5.6.2.tar.xz";
sha256 = "0yj5yg2dqkrwbgbicmk2rpqsagmi8dsffkrprpsj0fmkx4awhv5y"; sha256 = "1v8cnhas3rynqz7b8wryry2qhblrnmnd3v39gdki1hzfz8fdxzvi";
name = "qtx11extras-opensource-src-5.6.1-1.tar.xz"; name = "qtx11extras-opensource-src-5.6.2.tar.xz";
}; };
}; };
qtxmlpatterns = { qtxmlpatterns = {
version = "5.6.1-1"; version = "5.6.2";
src = fetchurl { src = fetchurl {
url = "${mirror}/official_releases/qt/5.6/5.6.1-1/submodules/qtxmlpatterns-opensource-src-5.6.1-1.tar.xz"; url = "${mirror}/official_releases/qt/5.6/5.6.2/submodules/qtxmlpatterns-opensource-src-5.6.2.tar.xz";
sha256 = "1966rrk7f6c55k57j33rffdjs77kk4mawrnnl8yv1ckcirxc3np1"; sha256 = "1k428wj8iffm6rrbvwbw0hksr99xqsxww8iahbk8r38qpzpg6vbw";
name = "qtxmlpatterns-opensource-src-5.6.1-1.tar.xz"; name = "qtxmlpatterns-opensource-src-5.6.2.tar.xz";
}; };
}; };
} }

View File

@ -1,8 +1,8 @@
{ stdenv, fetchurl, unzip, openblas, gfortran }: { stdenv, fetchurl, unzip, openblas, gfortran }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "3.12.6";
name = "ipopt-${version}"; name = "ipopt-${version}";
version = "3.12.6";
src = fetchurl { src = fetchurl {
url = "http://www.coin-or.org/download/source/Ipopt/Ipopt-${version}.zip"; url = "http://www.coin-or.org/download/source/Ipopt/Ipopt-${version}.zip";
@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "A software package for large-scale nonlinear optimization"; description = "A software package for large-scale nonlinear optimization";
homepage = https://projects.coin-or.org/Ipopt; homepage = "https://projects.coin-or.org/Ipopt";
license = licenses.epl10; license = licenses.epl10;
platforms = platforms.unix; platforms = platforms.unix;
maintainers = with maintainers; [ abbradar ]; maintainers = with maintainers; [ abbradar ];

View File

@ -1,8 +1,8 @@
{ stdenv, fetchFromGitHub, cmake }: { stdenv, fetchFromGitHub, cmake }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "0.7.5";
name = "Vc-${version}"; name = "Vc-${version}";
version = "0.7.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "VcDevel"; owner = "VcDevel";

View File

@ -1,14 +1,14 @@
{ stdenv, fetchFromGitHub, cmake }: { stdenv, fetchFromGitHub, cmake }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "1.2.0";
name = "Vc-${version}"; name = "Vc-${version}";
version = "1.3.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "VcDevel"; owner = "VcDevel";
repo = "Vc"; repo = "Vc";
rev = version; rev = version;
sha256 = "0qlfvcxv3nmf5drz5bc9kynaljr513pbn7snwgvghm150skmkpfl"; sha256 = "18vi92xxg0ly0fw4v06fwls11rahmg5z8xf65jxxrbgf37vc1wxi";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View File

@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = http://vcg.isti.cnr.it/vcglib/install.html; homepage = "http://vcg.isti.cnr.it/vcglib/install.html";
description = "C++ library for manipulation, processing and displaying with OpenGL of triangle and tetrahedral meshes"; description = "C++ library for manipulation, processing and displaying with OpenGL of triangle and tetrahedral meshes";
license = licenses.gpl3; license = licenses.gpl3;
platforms = platforms.linux; platforms = platforms.linux;

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "wolfssl-${version}"; name = "wolfssl-${version}";
version = "3.9.8"; version = "3.9.10b";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "wolfSSL"; owner = "wolfSSL";
repo = "wolfssl"; repo = "wolfssl";
rev = "v${version}"; rev = "v${version}";
sha256 = "0b1a9rmzpzjblj0gsrzas2aljivd0gfimcsj8gjl80ng25zgmaxr"; sha256 = "1hx543kxi4fpxww0y2c05kaav99zmnxm81rq7v7d87qzmvw2g4gx";
}; };
outputs = [ "out" "dev" "doc" "lib" ]; outputs = [ "out" "dev" "doc" "lib" ];

View File

@ -1,8 +1,8 @@
{ stdenv, fetchurl, autoreconfHook, unzip }: { stdenv, fetchurl, autoreconfHook, unzip }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "2.5.0";
name = "xlslib-${version}"; name = "xlslib-${version}";
version = "2.5.0";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/xlslib/xlslib-package-${version}.zip"; url = "mirror://sourceforge/xlslib/xlslib-package-${version}.zip";
@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "C++/C library to construct Excel .xls files in code"; description = "C++/C library to construct Excel .xls files in code";
homepage = http://sourceforge.net/projects/xlslib/; homepage = "http://sourceforge.net/projects/xlslib/";
license = licenses.bsd2; license = licenses.bsd2;
platforms = platforms.linux; platforms = platforms.linux;
maintainers = with maintainers; [ abbradar ]; maintainers = with maintainers; [ abbradar ];

View File

@ -0,0 +1,29 @@
{ stdenv, fetchFromGitHub, autoreconfHook, ocaml, findlib }:
let
pname = "ocplib-simplex";
version = "0.3";
in
stdenv.mkDerivation {
name = "ocaml${ocaml.version}-${pname}-${version}";
src = fetchFromGitHub {
owner = "OCamlPro-Iguernlala";
repo = pname;
rev = version;
sha256 = "1fmz38w2cj9fny4adqqyil59dvndqkr59s7wk2gqs47r72b6sisa";
};
buildInputs = [ autoreconfHook ocaml findlib ];
createFindlibDestdir = true;
meta = {
description = "An OCaml library implementing a simplex algorithm, in a functional style, for solving systems of linear inequalities";
homepage = https://github.com/OCamlPro-Iguernlala/ocplib-simplex;
inherit (ocaml.meta) platforms;
license = stdenv.lib.licenses.lgpl21;
maintainers = [ stdenv.lib.maintainers.vbgl ];
};
}

View File

@ -28,7 +28,6 @@ in buildPythonPackage rec {
}' blivet/formats/__init__.py }' blivet/formats/__init__.py
sed -i -e 's|"lsof"|"${lsof}/bin/lsof"|' blivet/formats/fs.py sed -i -e 's|"lsof"|"${lsof}/bin/lsof"|' blivet/formats/fs.py
sed -i -r -e 's|"(u?mount)"|"${utillinux}/bin/\1"|' blivet/util.py sed -i -r -e 's|"(u?mount)"|"${utillinux}/bin/\1"|' blivet/util.py
sed -i -e '/pvscan/s/, *"--cache"//' blivet/devicelibs/lvm.py
''; '';
propagatedBuildInputs = [ propagatedBuildInputs = [

View File

@ -0,0 +1,36 @@
{ stdenv, fetchurl, nettools, glibcLocales, pythonPackages }:
pythonPackages.buildPythonApplication rec {
name = "magic-wormhole-${version}";
version = "0.8.1";
src = fetchurl {
url = "mirror://pypi/m/magic-wormhole/${name}.tar.gz";
sha256 = "1yh5nbhh9z1am2pqnb5qqyq1zjl1m7z6jnkmvry2q14qwspw9had";
};
buildInputs = [ nettools glibcLocales ];
propagatedBuildInputs = with pythonPackages; [ autobahn cffi click hkdf pynacl spake2 tqdm ];
patchPhase = ''
sed -i -e "s|'ifconfig'|'${nettools}/bin/ifconfig'|" src/wormhole/ipaddrs.py
sed -i -e "s|if (os.path.dirname(os.path.abspath(wormhole))|if not os.path.abspath(wormhole).startswith('/nix/store') and (os.path.dirname(os.path.abspath(wormhole))|" src/wormhole/test/test_scripts.py
# XXX: disable one test due to warning:
# setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
sed -i -e "s|def test_text_subprocess|def skip_test_text_subprocess|" src/wormhole/test/test_scripts.py
'';
checkPhase = ''
export PATH="$PATH:$out/bin"
export LANG="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
${pythonPackages.python.interpreter} -m wormhole.test.run_trial wormhole
'';
meta = with stdenv.lib; {
description = "Securely transfer data between computers";
homepage = "https://github.com/warner/magic-wormhole";
license = licenses.mit;
maintainers = with maintainers; [ asymmetric ];
};
}

Some files were not shown because too many files have changed in this diff Show More