uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead

https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948
this can do it nicely.

Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
Anton Arapov 2021-04-03 12:58:10 +02:00 committed by Alan Daniels
commit 56de2bcd43
30691 changed files with 3076956 additions and 0 deletions

View file

@ -0,0 +1,38 @@
{ lib, buildPackages, stdenv, autoreconfHook, fetchurl }:
stdenv.mkDerivation rec {
pname = "alsa-firmware";
version = "1.2.4";
src = fetchurl {
url = "mirror://alsa/firmware/alsa-firmware-${version}.tar.bz2";
sha256 = "sha256-tnttfQi8/CR+9v8KuIqZwYgwWjz1euLf0LzZpbNs1bs=";
};
depsBuildBuild = [ buildPackages.stdenv.cc ];
nativeBuildInputs = [ autoreconfHook ];
configureFlags = [
"--with-hotplug-dir=$(out)/lib/firmware"
];
dontStrip = true;
postInstall = ''
# These are lifted from the Arch PKGBUILD
# remove files which conflicts with linux-firmware
rm -rf $out/lib/firmware/{ct{efx,speq}.bin,ess,korg,sb16,yamaha}
# remove broken symlinks (broken upstream)
rm -rf $out/lib/firmware/turtlebeach
# remove empty dir
rm -rf $out/bin
'';
meta = with lib; {
homepage = "http://www.alsa-project.org/";
description = "Soundcard firmwares from the alsa project";
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ l-as ];
};
}

View file

@ -0,0 +1,232 @@
diff --git a/src/control/control.c b/src/control/control.c
index d66ed75..42cecad 100644
--- a/src/control/control.c
+++ b/src/control/control.c
@@ -838,6 +838,10 @@ static int snd_ctl_open_conf(snd_ctl_t **ctlp, const char *name,
#ifndef PIC
extern void *snd_control_open_symbols(void);
#endif
+
+ snd_config_t *libs = NULL;
+ const char *libs_lib = NULL;
+
if (snd_config_get_type(ctl_conf) != SND_CONFIG_TYPE_COMPOUND) {
if (name)
SNDERR("Invalid type for CTL %s definition", name);
@@ -879,6 +883,19 @@ static int snd_ctl_open_conf(snd_ctl_t **ctlp, const char *name,
SNDERR("Invalid type for %s", id);
goto _err;
}
+
+ continue;
+ }
+ // Handle an array of extra libs.
+ if (strcmp(id, "libs") == 0) {
+ if (snd_config_get_type(n) != SND_CONFIG_TYPE_COMPOUND) {
+ SNDERR("Invalid type for libs definition in CTL %s definition",
+ str);
+ goto _err;
+ }
+
+ libs = n;
+
continue;
}
if (strcmp(id, "open") == 0) {
@@ -903,7 +920,62 @@ static int snd_ctl_open_conf(snd_ctl_t **ctlp, const char *name,
open_name = buf;
sprintf(buf, "_snd_ctl_%s_open", str);
}
- if (!lib) {
+
+#ifndef PIC
+ snd_control_open_symbols();
+#endif
+
+ // Normal alsa behaviour when there is no libs array.
+ if (!libs) {
+ if (lib) {
+ open_func = snd_dlobj_cache_get(lib, open_name,
+ SND_DLSYM_VERSION(SND_CONTROL_DLSYM_VERSION), 1);
+ }
+ }
+ // Handle libs array.
+ // Suppresses error messages if any function is loaded successfully.
+ else {
+ if (lib) {
+ open_func = snd_dlobj_cache_get(lib, open_name,
+ SND_DLSYM_VERSION(SND_CONTROL_DLSYM_VERSION), 0);
+ }
+
+ if (!open_func) {
+ snd_config_for_each(i, next, libs) {
+ snd_config_t *n = snd_config_iterator_entry(i);
+
+ err = snd_config_get_string(n, &libs_lib);
+ if (err < 0) {
+ SNDERR("Invalid entry in CTL %s libs definition", str);
+ goto _err;
+ }
+
+ if (!open_func) {
+ open_func = snd_dlobj_cache_get(libs_lib, open_name,
+ SND_DLSYM_VERSION(SND_CONTROL_DLSYM_VERSION), 0);
+ }
+ }
+ }
+
+ // Print error messages.
+ if (!open_func) {
+ if (lib) {
+ SNDERR("Either %s cannot be opened or %s was not defined inside",
+ lib, open_name);
+ }
+
+ snd_config_for_each(i, next, libs) {
+ snd_config_t *n = snd_config_iterator_entry(i);
+
+ snd_config_get_string(n, &libs_lib);
+ SNDERR("Either %s cannot be opened or %s was not defined inside",
+ libs_lib, open_name);
+ }
+ }
+ }
+
+ // Look in ALSA_PLUGIN_DIR iff we found nowhere else to look.
+ if (!lib && (!libs || !libs_lib)) {
const char *const *build_in = build_in_ctls;
while (*build_in) {
if (!strcmp(*build_in, str))
@@ -919,12 +991,11 @@ static int snd_ctl_open_conf(snd_ctl_t **ctlp, const char *name,
lib = buf1;
sprintf(buf1, "%s/libasound_module_ctl_%s.so", ALSA_PLUGIN_DIR, str);
}
- }
-#ifndef PIC
- snd_control_open_symbols();
-#endif
- open_func = snd_dlobj_cache_get(lib, open_name,
+
+ open_func = snd_dlobj_cache_get(lib, open_name,
SND_DLSYM_VERSION(SND_CONTROL_DLSYM_VERSION), 1);
+ }
+
if (open_func) {
err = open_func(ctlp, name, ctl_root, ctl_conf, mode);
if (err >= 0) {
diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c
index 2e24338..7f489f4 100644
--- a/src/pcm/pcm.c
+++ b/src/pcm/pcm.c
@@ -2116,6 +2116,10 @@ static int snd_pcm_open_conf(snd_pcm_t **pcmp, const char *name,
#ifndef PIC
extern void *snd_pcm_open_symbols(void);
#endif
+
+ snd_config_t *libs = NULL;
+ const char *libs_lib = NULL;
+
if (snd_config_get_type(pcm_conf) != SND_CONFIG_TYPE_COMPOUND) {
char *val;
id = NULL;
@@ -2160,6 +2164,19 @@ static int snd_pcm_open_conf(snd_pcm_t **pcmp, const char *name,
SNDERR("Invalid type for %s", id);
goto _err;
}
+
+ continue;
+ }
+ // Handle an array of extra libs.
+ if (strcmp(id, "libs") == 0) {
+ if (snd_config_get_type(n) != SND_CONFIG_TYPE_COMPOUND) {
+ SNDERR("Invalid type for libs definition in PCM %s definition",
+ str);
+ goto _err;
+ }
+
+ libs = n;
+
continue;
}
if (strcmp(id, "open") == 0) {
@@ -2184,7 +2201,62 @@ static int snd_pcm_open_conf(snd_pcm_t **pcmp, const char *name,
open_name = buf;
sprintf(buf, "_snd_pcm_%s_open", str);
}
- if (!lib) {
+
+#ifndef PIC
+ snd_pcm_open_symbols(); /* this call is for static linking only */
+#endif
+
+ // Normal alsa behaviour when there is no libs array.
+ if (!libs) {
+ if (lib) {
+ open_func = snd_dlobj_cache_get(lib, open_name,
+ SND_DLSYM_VERSION(SND_PCM_DLSYM_VERSION), 1);
+ }
+ }
+ // Handle libs array.
+ // Suppresses error messages if any function is loaded successfully.
+ else {
+ if (lib) {
+ open_func = snd_dlobj_cache_get(lib, open_name,
+ SND_DLSYM_VERSION(SND_PCM_DLSYM_VERSION), 0);
+ }
+
+ if (!open_func) {
+ snd_config_for_each(i, next, libs) {
+ snd_config_t *n = snd_config_iterator_entry(i);
+
+ err = snd_config_get_string(n, &libs_lib);
+ if (err < 0) {
+ SNDERR("Invalid entry in PCM %s libs definition", str);
+ goto _err;
+ }
+
+ if (!open_func) {
+ open_func = snd_dlobj_cache_get(libs_lib, open_name,
+ SND_DLSYM_VERSION(SND_PCM_DLSYM_VERSION), 0);
+ }
+ }
+ }
+
+ // Print error messages.
+ if (!open_func) {
+ if (lib) {
+ SNDERR("Either %s cannot be opened or %s was not defined inside",
+ lib, open_name);
+ }
+
+ snd_config_for_each(i, next, libs) {
+ snd_config_t *n = snd_config_iterator_entry(i);
+
+ snd_config_get_string(n, &libs_lib);
+ SNDERR("Either %s cannot be opened or %s was not defined inside",
+ libs_lib, open_name);
+ }
+ }
+ }
+
+ // Look in ALSA_PLUGIN_DIR iff we found nowhere else to look.
+ if (!lib && (!libs || !libs_lib)) {
const char *const *build_in = build_in_pcms;
while (*build_in) {
if (!strcmp(*build_in, str))
@@ -2200,12 +2272,11 @@ static int snd_pcm_open_conf(snd_pcm_t **pcmp, const char *name,
lib = buf1;
sprintf(buf1, "%s/libasound_module_pcm_%s.so", ALSA_PLUGIN_DIR, str);
}
- }
-#ifndef PIC
- snd_pcm_open_symbols(); /* this call is for static linking only */
-#endif
- open_func = snd_dlobj_cache_get(lib, open_name,
+
+ open_func = snd_dlobj_cache_get(lib, open_name,
SND_DLSYM_VERSION(SND_PCM_DLSYM_VERSION), 1);
+ }
+
if (open_func) {
err = open_func(pcmp, name, pcm_root, pcm_conf, stream, mode);
if (err >= 0) {

View file

@ -0,0 +1,47 @@
{ lib
, stdenv
, fetchurl
, alsa-topology-conf
, alsa-ucm-conf
}:
stdenv.mkDerivation rec {
pname = "alsa-lib";
version = "1.2.6.1";
src = fetchurl {
url = "mirror://alsa/lib/${pname}-${version}.tar.bz2";
hash = "sha256-rVgpk9Us21+xWaC+q2CmrFfqsMwb34XcTbbWGX8CMz8=";
};
patches = [
# Add a "libs" field to the syntax recognized in the /etc/asound.conf file.
# The nixos modules for pulseaudio, jack, and pipewire are leveraging this
# "libs" field to declare locations for both native and 32bit plugins, in
# order to support apps with 32bit sound running on x86_64 architecture.
./alsa-plugin-conf-multilib.patch
];
enableParallelBuilding = true;
postInstall = ''
ln -s ${alsa-ucm-conf}/share/alsa/{ucm,ucm2} $out/share/alsa
ln -s ${alsa-topology-conf}/share/alsa/topology $out/share/alsa
'';
outputs = [ "out" "dev" ];
meta = with lib; {
homepage = "http://www.alsa-project.org/";
description = "ALSA, the Advanced Linux Sound Architecture libraries";
longDescription = ''
The Advanced Linux Sound Architecture (ALSA) provides audio and
MIDI functionality to the Linux-based operating system.
'';
license = licenses.lgpl21Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ l-as ];
};
}

View file

@ -0,0 +1,31 @@
{lib, stdenv, fetchurl, alsa-lib, gettext, ncurses, libsamplerate}:
stdenv.mkDerivation rec {
pname = "alsa-oss";
version = "1.1.8";
src = fetchurl {
url = "mirror://alsa/oss-lib/${pname}-${version}.tar.bz2";
sha256 = "13nn6n6wpr2sj1hyqx4r9nb9bwxnhnzw8r2f08p8v13yjbswxbb4";
};
buildInputs = [ alsa-lib ncurses libsamplerate ];
nativeBuildInputs = [ gettext ];
configureFlags = [ "--disable-xmlto" ];
installFlags = [ "ASOUND_STATE_DIR=$(TMPDIR)/dummy" ];
meta = with lib; {
homepage = "http://www.alsa-project.org/";
description = "ALSA, the Advanced Linux Sound Architecture alsa-oss emulation";
longDescription = ''
The Advanced Linux Sound Architecture (ALSA) provides audio and
MIDI functionality to the Linux-based operating system.
'';
license = licenses.gpl2;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,27 @@
{ stdenv, fetchurl, lib, pkg-config, alsa-lib, libogg, libpulseaudio ? null, libjack2 ? null }:
stdenv.mkDerivation rec {
pname = "alsa-plugins";
version = "1.2.6";
src = fetchurl {
url = "mirror://alsa/plugins/${pname}-${version}.tar.bz2";
sha256 = "sha256-BogYpLVdjAKdqgABXYU9RRE/VrIkt8ZOHhF5iMglsqA=";
};
nativeBuildInputs = [ pkg-config ];
# ToDo: a52, etc.?
buildInputs =
[ alsa-lib libogg ]
++ lib.optional (libpulseaudio != null) libpulseaudio
++ lib.optional (libjack2 != null) libjack2;
meta = with lib; {
description = "Various plugins for ALSA";
homepage = "http://alsa-project.org/";
license = licenses.lgpl21;
maintainers = [ maintainers.marcweber ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,10 @@
{ stdenv
, alsa-plugins
, writeShellScriptBin
}:
let
arch = if stdenv.hostPlatform.system == "i686-linux" then "32" else "64";
in
writeShellScriptBin "ap${arch}" ''
ALSA_PLUGIN_DIRS=${alsa-plugins}/lib/alsa-lib "$@"
''

View file

@ -0,0 +1,54 @@
{ lib, stdenv, fetchurl, alsa-lib, pkg-config, gtk2, gtk3, fltk13 }:
# Comes from upstream as as bundle of several tools,
# some use gtk2, some gtk3 (and some even fltk13).
stdenv.mkDerivation rec {
pname = "alsa-tools";
version = "1.2.5";
src = fetchurl {
url = "mirror://alsa/tools/${pname}-${version}.tar.bz2";
sha256 = "sha256-NacQJ6AfTX3kci4iNSDpQN5os8VwtsZxaRVnrij5iT4=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ alsa-lib gtk2 gtk3 fltk13 ];
patchPhase = ''
export tools="as10k1 hda-verb hdspmixer echomixer hdajackretask hdspconf hwmixvolume mixartloader rmedigicontrol sscape_ctl vxloader envy24control hdajacksensetest hdsploader ld10k1 pcxhrloader sb16_csp us428control"
# export tools="as10k1 hda-verb hdspmixer qlo10k1 seq usx2yloader echomixer hdajackretask hdspconf hwmixvolume mixartloader rmedigicontrol sscape_ctl vxloader envy24control hdajacksensetest hdsploader ld10k1 pcxhrloader sb16_csp us428control"
'';
configurePhase = ''
for tool in $tools; do
echo "Tool: $tool:"
cd "$tool"; ./configure --prefix="$out"; cd -
done
'';
buildPhase = ''
for tool in $tools; do
cd "$tool"; make; cd -
done
'';
installPhase = ''
for tool in $tools; do
cd "$tool"; make install; cd -
done
'';
meta = with lib; {
homepage = "http://www.alsa-project.org/";
description = "ALSA, the Advanced Linux Sound Architecture tools";
longDescription = ''
The Advanced Linux Sound Architecture (ALSA) provides audio and
MIDI functionality to the Linux-based operating system.
'';
license = licenses.gpl2;
platforms = platforms.linux;
maintainers = [ maintainers.fps ];
};
}

View file

@ -0,0 +1,36 @@
{ lib, stdenv, fetchurl }:
stdenv.mkDerivation rec {
name = "alsa-topology-conf-${version}";
version = "1.2.5.1";
src = fetchurl {
url = "mirror://alsa/lib/${name}.tar.bz2";
sha256 = "sha256-98W64VRavNc4JLyX9OcsNA4Rq+oYi6DxwG9eCtd2sXk=";
};
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/alsa
cp -r topology $out/share/alsa
runHook postInstall
'';
meta = with lib; {
homepage = "https://www.alsa-project.org/";
description = "ALSA topology configuration files";
longDescription = ''
The Advanced Linux Sound Architecture (ALSA) provides audio and
MIDI functionality to the Linux-based operating system.
'';
license = licenses.bsd3;
maintainers = [ maintainers.roastiek ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,36 @@
{ lib, stdenv, fetchurl }:
stdenv.mkDerivation rec {
pname = "alsa-ucm-conf";
version = "1.2.6.3";
src = fetchurl {
url = "mirror://alsa/lib/${pname}-${version}.tar.bz2";
sha256 = "sha256-uKA6o4emJKL2XtwgG/d3QhGQtgUpqSCHZGgjr72Wxc0=";
};
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/alsa
cp -r ucm ucm2 $out/share/alsa
runHook postInstall
'';
meta = with lib; {
homepage = "https://www.alsa-project.org/";
description = "ALSA Use Case Manager configuration";
longDescription = ''
The Advanced Linux Sound Architecture (ALSA) provides audio and
MIDI functionality to the Linux-based operating system.
'';
license = licenses.bsd3;
maintainers = [ maintainers.roastiek ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,36 @@
{lib, stdenv, fetchurl, alsa-lib, gettext, makeWrapper, ncurses, libsamplerate, pciutils, which, fftw}:
stdenv.mkDerivation rec {
pname = "alsa-utils";
version = "1.2.6";
src = fetchurl {
url = "mirror://alsa/utils/${pname}-${version}.tar.bz2";
sha256 = "sha256-ah79ih8dnTjkiWM+rsH/+lwxVmOzFsq4BL5IaIfmFF0=";
};
nativeBuildInputs = [ gettext makeWrapper ];
buildInputs = [ alsa-lib ncurses libsamplerate fftw ];
configureFlags = [ "--disable-xmlto" "--with-udev-rules-dir=$(out)/lib/udev/rules.d" ];
installFlags = [ "ASOUND_STATE_DIR=$(TMPDIR)/dummy" ];
postFixup = ''
mv $out/bin/alsa-info.sh $out/bin/alsa-info
wrapProgram $out/bin/alsa-info --prefix PATH : "${lib.makeBinPath [ which pciutils ]}"
'';
meta = with lib; {
homepage = "http://www.alsa-project.org/";
description = "ALSA, the Advanced Linux Sound Architecture utils";
longDescription = ''
The Advanced Linux Sound Architecture (ALSA) provides audio and
MIDI functionality to the Linux-based operating system.
'';
license = licenses.gpl2;
platforms = platforms.linux;
maintainers = [ maintainers.AndersonTorres ];
};
}