From 5793126b31c3cbffb42c1aff1082e4e682848fc3 Mon Sep 17 00:00:00 2001 From: Colin Date: Sat, 27 Apr 2024 19:01:44 +0000 Subject: [PATCH 1/2] ffado: support cross compilation --- pkgs/os-specific/linux/ffado/default.nix | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/pkgs/os-specific/linux/ffado/default.nix b/pkgs/os-specific/linux/ffado/default.nix index 2196a5730aa2..a73f8209cf2e 100644 --- a/pkgs/os-specific/linux/ffado/default.nix +++ b/pkgs/os-specific/linux/ffado/default.nix @@ -49,13 +49,25 @@ stdenv.mkDerivation rec { prePatch = '' substituteInPlace ./support/tools/ffado-diag.in \ --replace /lib/modules/ "/run/booted-system/kernel-modules/lib/modules/" + + # prevent build tools from leaking into closure + substituteInPlace support/tools/SConscript --replace-fail \ + 'support/tools/ffado-diag --static' \ + "echo '"'See `nix-store --query --tree ${placeholder "out"}`.'"'" + '' + lib.optionalString (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' + # skip the CC sanity check, since that requires invoking cross-compiled binaries during build + substituteInPlace SConstruct \ + --replace-fail 'conf.CompilerCheck()' 'True' \ + --replace-fail "pkg-config" "$PKG_CONFIG" + substituteInPlace admin/pkgconfig.py \ + --replace-fail "pkg-config" "$PKG_CONFIG" ''; nativeBuildInputs = [ (scons.override { # SConstruct script depends on distutils removed in Python 3.12 - python3Packages = python311.pkgs; + python3Packages = python311.pythonOnBuildForHost.pkgs; }) pkg-config which @@ -68,6 +80,8 @@ stdenv.mkDerivation rec { prefixKey = "PREFIX="; sconsFlags = [ + "CUSTOM_ENV=True" # tell SConstruct to use nixpkgs' CC/CXX/CFLAGS + "DETECT_USERSPACE_ENV=False" "DEBUG=False" "ENABLE_ALL=True" "BUILD_TESTS=True" @@ -97,11 +111,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; dontWrapQtApps = true; - - postInstall = '' - # prevent build tools from leaking into closure - echo 'See `nix-store --query --tree ${placeholder "out"}`.' > $out/lib/libffado/static_info.txt - ''; + strictDeps = true; preFixup = lib.optionalString withMixer '' wrapQtApp "$bin/bin/ffado-mixer" From 9e6e56d4f0728a53afd9855eb6c09644b2ddae8a Mon Sep 17 00:00:00 2001 From: Colin Date: Mon, 12 Aug 2024 09:48:49 +0000 Subject: [PATCH 2/2] ffado: remove dead patch it was removed from the package in the [2.4.8 -> 2.4.9 upgrade](https://github.com/NixOS/nixpkgs/pull/306407) but never removed from git. --- pkgs/os-specific/linux/ffado/fix-build.patch | 64 -------------------- 1 file changed, 64 deletions(-) delete mode 100644 pkgs/os-specific/linux/ffado/fix-build.patch diff --git a/pkgs/os-specific/linux/ffado/fix-build.patch b/pkgs/os-specific/linux/ffado/fix-build.patch deleted file mode 100644 index db4c47fa38d5..000000000000 --- a/pkgs/os-specific/linux/ffado/fix-build.patch +++ /dev/null @@ -1,64 +0,0 @@ -From b0f2b20b23780dd2e67a01c15462070dd86c4ac1 Mon Sep 17 00:00:00 2001 -From: Jan Tojnar -Date: Sun, 3 Mar 2019 11:50:27 +0100 -Subject: [PATCH] build: Add datadir option for /usr/share - -Hardcoded /usr/share does not work for platforms that do not have global /usr like Nix. -Let’s introduce a new DATADIR option, that allows overriding the directory and use it for metainfodir. - -While at it, let’s also use it for SHAREDIR and MANDIR for consistency, -following the GNU directory convention: -https://www.gnu.org/prep/standards/html_node/Directory-Variables.html ---- - SConstruct | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/SConstruct b/SConstruct -index 05755e4b..3fbdc1d8 100644 ---- a/SConstruct -+++ b/SConstruct -@@ -49,9 +49,10 @@ - PathVariable( "BINDIR", "Overwrite the directory where apps are installed to.", "$PREFIX/bin", PathVariable.PathAccept ), - PathVariable( "LIBDIR", "Overwrite the directory where libs are installed to.", "$PREFIX/lib", PathVariable.PathAccept ), - PathVariable( "INCLUDEDIR", "Overwrite the directory where headers are installed to.", "$PREFIX/include", PathVariable.PathAccept ), -- PathVariable( "SHAREDIR", "Overwrite the directory where misc shared files are installed to.", "$PREFIX/share/libffado", PathVariable.PathAccept ), -+ PathVariable( "DATADIR", "Overwrite the directory where platform-independent files are installed to.", "$PREFIX/share", PathVariable.PathAccept ), -+ PathVariable( "SHAREDIR", "Overwrite the directory where misc shared files are installed to.", "$DATADIR/libffado", PathVariable.PathAccept ), - PathVariable( "LIBDATADIR", "Location for architecture-dependent data.", "$LIBDIR/libffado", PathVariable.PathAccept ), -- PathVariable( "MANDIR", "Overwrite the directory where manpages are installed", "$PREFIX/man", PathVariable.PathAccept ), -+ PathVariable( "MANDIR", "Overwrite the directory where manpages are installed", "$DATADIR/man", PathVariable.PathAccept ), - PathVariable( "PYPKGDIR", "The directory where the python modules get installed.", - distutils.sysconfig.get_python_lib( prefix="$PREFIX" ), PathVariable.PathAccept ), - PathVariable( "UDEVDIR", "Overwrite the directory where udev rules are installed to.", "/lib/udev/rules.d/", PathVariable.PathAccept ), -@@ -523,6 +524,7 @@ - env['BINDIR'] = Template( env['BINDIR'] ).safe_substitute( env ) - env['LIBDIR'] = Template( env['LIBDIR'] ).safe_substitute( env ) - env['INCLUDEDIR'] = Template( env['INCLUDEDIR'] ).safe_substitute( env ) -+env['DATADIR'] = Template( env['DATADIR'] ).safe_substitute( env ) - env['SHAREDIR'] = Template( env['SHAREDIR'] ).safe_substitute( env ) - env['LIBDATADIR'] = Template( env['LIBDATADIR'] ).safe_substitute( env ) - env['UDEVDIR'] = Template( env['UDEVDIR'] ).safe_substitute( env ) -@@ -531,18 +533,21 @@ - env['bindir'] = Template( env.destdir + env['BINDIR'] ).safe_substitute( env ) - env['libdir'] = Template( env.destdir + env['LIBDIR'] ).safe_substitute( env ) - env['includedir'] = Template( env.destdir + env['INCLUDEDIR'] ).safe_substitute( env ) -+env['datadir'] = Template( env.destdir + env['DATADIR'] ).safe_substitute( env ) - env['sharedir'] = Template( env.destdir + env['SHAREDIR'] ).safe_substitute( env ) - env['libdatadir'] = Template( env.destdir + env['LIBDATADIR'] ).safe_substitute( env ) - env['mandir'] = Template( env.destdir + env['MANDIR'] ).safe_substitute( env ) - env['pypkgdir'] = Template( env.destdir + env['PYPKGDIR'] ).safe_substitute( env ) - env['udevdir'] = Template( env.destdir + env['UDEVDIR'] ).safe_substitute( env ) - env['PYPKGDIR'] = Template( env['PYPKGDIR'] ).safe_substitute( env ) --env['metainfodir'] = Template( env.destdir + "/usr/share/metainfo" ).safe_substitute( env ) -- -+env['metainfodir'] = Template( env.destdir + env['DATADIR'] + "/metainfo" ).safe_substitute( env ) -+ -+env.Command( target=env['datadir'], source="", action=Mkdir( env['datadir'] ) ) - env.Command( target=env['sharedir'], source="", action=Mkdir( env['sharedir'] ) ) - - env.Alias( "install", env['libdir'] ) - env.Alias( "install", env['includedir'] ) -+env.Alias( "install", env['datadir'] ) - env.Alias( "install", env['sharedir'] ) - env.Alias( "install", env['libdatadir'] ) - env.Alias( "install", env['bindir'] )