Merge pull request #36657 from oxij/pkgs/pre-cardiacarrest

prepare for a swtich to `libcardiacarrest`
This commit is contained in:
Michael Raskin 2018-03-09 22:03:01 +00:00 committed by GitHub
commit f74251dc92
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 149 additions and 37 deletions

View File

@ -1,15 +1,22 @@
{ stdenv, fetchurl, boost, libpulseaudio }:
{ stdenv, fetchFromGitHub, fetchpatch, boost, libpulseaudio }:
stdenv.mkDerivation rec {
name = "pamixer-${version}";
version = "1.3.1";
src = fetchurl {
url = "https://github.com/cdemoulins/pamixer/archive/${version}.tar.gz";
sha256 = "1lsvb4xk1dq762w9c0jn7xvj3v1lzppql9mj1b55fhzdypbrkm6x";
src = fetchFromGitHub {
owner = "cdemoulins";
repo = "pamixer";
rev = version;
sha256 = "15zs2x4hnrpxphqn542b6qqm4ymvhkvbcfyffy69d6cki51chzzw";
};
# Remove after https://github.com/cdemoulins/pamixer/pull/16 gets fixed
patches = [(fetchpatch {
url = "https://github.com/oxij/pamixer/commit/dea1cd967aa837940e5c0b04ef7ebc47a7a93d63.patch";
sha256 = "0s77xmsiwywyyp6f4bjxg1sqdgms1k5fiy7na6ws0aswshfnzfjb";
})];
buildInputs = [ boost libpulseaudio ];
installPhase = ''

View File

@ -0,0 +1,26 @@
Yep, it's a "return code was ignored" bug.
diff --git a/media/libcubeb/src/cubeb_pulse.c b/media/libcubeb/src/cubeb_pulse.c
index aaaaaaaaaaa..bbbbbbbbbbb 100644
--- a/media/libcubeb/src/cubeb_pulse.c
+++ b/media/libcubeb/src/cubeb_pulse.c
@@ -473,6 +473,8 @@
static int
pulse_context_init(cubeb * ctx)
{
+ int r;
+
if (ctx->context) {
assert(ctx->error == 1);
pulse_context_destroy(ctx);
@@ -486,9 +488,9 @@
WRAP(pa_context_set_state_callback)(ctx->context, context_state_callback, ctx);
WRAP(pa_threaded_mainloop_lock)(ctx->mainloop);
- WRAP(pa_context_connect)(ctx->context, NULL, 0, NULL);
+ r = WRAP(pa_context_connect)(ctx->context, NULL, 0, NULL);
- if (wait_until_context_ready(ctx) != 0) {
+ if (r < 0 || wait_until_context_ready(ctx) != 0) {
WRAP(pa_threaded_mainloop_unlock)(ctx->mainloop);
pulse_context_destroy(ctx);
ctx->context = NULL;

View File

@ -1,6 +1,18 @@
{ lib, callPackage, stdenv, overrideCC, gcc5, fetchurl, fetchFromGitHub, fetchpatch }:
let common = opts: callPackage (import ./common.nix opts); in
let
common = opts: callPackage (import ./common.nix opts);
nixpkgsPatches = [
./env_var_for_system_dir.patch
# this one is actually an omnipresent bug
# https://bugzilla.mozilla.org/show_bug.cgi?id=1444519
./fix-pa-context-connect-retval.patch
];
in
rec {
@ -12,9 +24,8 @@ rec {
sha512 = "ff748780492fc66b3e44c7e7641f16206e4c09514224c62d37efac2c59877bdf428a3670bfb50407166d7b505d4e2ea020626fd776b87f6abb6bc5d2e54c773f";
};
patches = [
patches = nixpkgsPatches ++ [
./no-buildconfig.patch
./env_var_for_system_dir.patch
# https://bugzilla.mozilla.org/show_bug.cgi?id=1430274
# Scheduled for firefox 59
@ -49,8 +60,7 @@ rec {
sha512 = "cf583df34272b7ff8841c3b093ca0819118f9c36d23c6f9b3135db298e84ca022934bcd189add6473922b199b47330c0ecf14c303ab4177c03dbf26e64476fa4";
};
patches =
[ ./env_var_for_system_dir.patch ];
patches = nixpkgsPatches;
meta = firefox.meta // {
description = "A web browser built from Firefox Extended Support Release source tree";
@ -93,15 +103,18 @@ rec {
It will use your default Firefox profile if you're not careful
even! Be careful!
It will clash with firefox binary if you install both. But its
not a problem since you should run browsers in separate
users/VMs anyway.
It will clash with firefox binary if you install both. But it
should not be a problem because you should run browsers in
separate users/VMs anyway.
Create new profile by starting it as
$ firefox -ProfileManager
and then configure it to use your tor instance.
Or just use `tor-browser-bundle` package that packs this
`tor-browser` back into a sanely-built bundle.
'';
homepage = https://www.torproject.org/projects/torbrowser.html;
platforms = lib.platforms.linux;
@ -124,8 +137,7 @@ in rec {
sha256 = "169mjkr0bp80yv9nzza7kay7y2k03lpnx71h4ybcv9ygxgzdgax5";
};
patches =
[ ./env_var_for_system_dir.patch ];
patches = nixpkgsPatches;
} // commonAttrs) {};
tor-browser-7-5 = common (rec {
@ -142,8 +154,7 @@ in rec {
sha256 = "0llbk7skh1n7yj137gv7rnxfasxsnvfjp4ss7h1fbdnw19yba115";
};
patches =
[ ./env_var_for_system_dir.patch ];
patches = nixpkgsPatches;
} // commonAttrs) {};
tor-browser = tor-browser-7-5;

View File

@ -1,14 +1,17 @@
{ stdenv, fetchFromGitHub, alsaLib, cmake, pkgconfig, glib }:
{ stdenv, fetchFromGitHub, alsaLib, cmake, pkgconfig, glib
, tracingSupport ? true, logToStderr ? true }:
let oz = x: if x then "1" else "0"; in
stdenv.mkDerivation rec {
name = "apulse-${version}";
version = "0.1.11";
version = "0.1.11.1";
src = fetchFromGitHub {
owner = "i-rinat";
repo = "apulse";
rev = "v${version}";
sha256 = "16l278q0czca2794fj388ql6qn1zrw24a0p6k7bayrrf5h32fdzd";
rev = "602b3a02b4b459d4652a3a0a836fab6f892d4080";
sha256 = "0yk9vgb4aws8xnkhdhgpxp5c0rri8yq61yxk85j99j8ax806i3r8";
};
enableParallelBuilding = true;
@ -17,6 +20,11 @@ stdenv.mkDerivation rec {
buildInputs = [ alsaLib glib ];
cmakeFlags = [
"-DWITH_TRACE=${oz tracingSupport}"
"-DLOG_TO_STDERR=${oz logToStderr}"
];
meta = with stdenv.lib; {
description = "PulseAudio emulation for ALSA";
homepage = https://github.com/i-rinat/apulse;

View File

@ -60,22 +60,22 @@ stdenv.mkDerivation {
'';
meta = apulse.meta // {
description = "libpulseaudio without any sound daemons over pure ALSA";
description = "libpulse without any sound daemons over pure ALSA";
longDescription = ''
apulse (${apulse.meta.homepage}) implements most of libpulseaudio
apulse (${apulse.meta.homepage}) implements most of libpulse
API over pure ALSA in 5% LOC of the original PulseAudio.
But apulse is made to be used as a wrapper that substitutes its
replacement libs into LD_LIBRARY_PATH. The problem with that is
that you still have to link against the original libpulseaudio.
that you still have to link against the original libpulse.
pressureaudio (http://git.r-36.net/pressureaudio/) wraps apulse
with everything you need to replace libpulseaudio completely.
with everything you need to replace libpulse completely.
This derivation is a reimplementation of pressureaudio in pure
nix.
You can simply override libpulseaudio with this and most
You can simply override libpulse with this and most
packages would just work.
'';
};

View File

@ -0,0 +1,48 @@
{ stdenv, fetchFromGitHub, pkgconfig, glib, libpulseaudio }:
with stdenv.lib;
stdenv.mkDerivation rec {
name = "libcardiacarrest-${version}";
version = "11.0-6"; # <PA API version>-<version>
src = fetchFromGitHub {
owner = "oxij";
repo = "libcardiacarrest";
rev = "1220b37b3de75238fedee1a66ca703fe1c8c71c3";
sha256 = "0fkfiixjybac3rwcd26621hh5dw4f5gnmm230cr4g8fl0i2ikmrz";
};
outputs = [ "out" "dev" ];
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ glib ];
makeFlags = [ "PREFIX=$(out)" ];
postInstall = ''
moveToOutput $out/include $dev
moveToOutput $out/lib/pkgconfig $dev
moveToOutput $out/lib/cmake $dev
'';
meta = src.meta // {
description = "A trivial implementation of libpulse PulseAudio library API";
longDescription = ''
libcardiacarrest is a trivial implementation of libpulse
PulseAudio library API that unconditionally (but gracefully)
fails to connect to the PulseAudio daemon and does nothing else.
apulse and pressureaudio (which uses apulse internally) are an
inspiration for this but unlike those two projects
libcardiacarrest is not an emulation layer, all it does is it
gracefully fails to provide the requested PulseAudio service
hoping the application would try something else (e.g. ALSA or
JACK).
'';
license = libpulseaudio.meta.license; # "same as PA headers"
maintainers = [ maintainers.oxij ]; # also the author
};
}

View File

@ -3,7 +3,7 @@
stdenv.mkDerivation rec {
name = "vpnc-0.5.3-post-r550";
src = fetchsvn {
url = "http://svn.unix-ag.uni-kl.de/vpnc";
url = "https://svn.unix-ag.uni-kl.de/vpnc";
rev = "550";
sha256 = "0x4ckfv9lpykwmh28v1kyzz91y1j2v48fi8q5nsawrba4q0wlrls";
};

View File

@ -498,10 +498,6 @@ with pkgs;
aptly = callPackage ../tools/misc/aptly { };
apulse = callPackage ../misc/apulse { };
libpressureaudio = callPackage ../misc/apulse/pressureaudio.nix { };
archivemount = callPackage ../tools/filesystems/archivemount { };
arandr = callPackage ../tools/X11/arandr { };
@ -10348,8 +10344,8 @@ with pkgs;
libxmi = callPackage ../development/libraries/libxmi { };
libxml2 = callPackage ../development/libraries/libxml2 {
};
libxml2 = callPackage ../development/libraries/libxml2 { };
libxml2Python = pkgs.buildEnv { # slightly hacky
name = "libxml2+py-${self.libxml2.version}";
paths = with libxml2; [ dev bin py ];
@ -12417,10 +12413,7 @@ with pkgs;
pshs = callPackage ../servers/http/pshs { };
libpulseaudio = callPackage ../servers/pulseaudio {
libOnly = true;
inherit (darwin.apple_sdk.frameworks) CoreServices AudioUnit Cocoa;
};
# PulseAudio daemons
# Name is changed to prevent use in packages;
# please use libpulseaudio instead.
@ -12440,6 +12433,25 @@ with pkgs;
inherit (darwin.apple_sdk.frameworks) CoreServices AudioUnit Cocoa;
};
# libpulse implementations
libpulseaudio-vanilla = callPackage ../servers/pulseaudio {
libOnly = true;
inherit (darwin.apple_sdk.frameworks) CoreServices AudioUnit Cocoa;
};
apulse = callPackage ../misc/apulse { };
libpressureaudio = callPackage ../misc/apulse/pressureaudio.nix {
libpulseaudio = libpulseaudio-vanilla; # headers only
};
libcardiacarrest = callPackage ../misc/libcardiacarrest {
libpulseaudio = libpulseaudio-vanilla; # meta only
};
libpulseaudio = libpulseaudio-vanilla;
tomcat_connectors = callPackage ../servers/http/apache-modules/tomcat-connectors { };
pies = callPackage ../servers/pies { };