libsidplayfp: Cleanups & formatting

- Use lib.strings.*Feature functions for generating configureFlags
- Fetch upstream-submitted patch to fix some flag logic
- Move documentation building to buildPhase
- Add meta.pkgConfigModules + test
- Switch to finalAttrs pattern
This commit is contained in:
OPNA2608
2023-12-28 19:23:14 +01:00
parent b79ab66775
commit 6ee837e8f1
@@ -4,16 +4,17 @@
, fetchpatch
, makeFontsConf
, nix-update-script
, testers
, autoreconfHook
, pkg-config
, perl
, unittest-cpp
, xa
, libgcrypt
, libexsid
, docSupport ? true
, doxygen
, graphviz
, libexsid
, libgcrypt
, perl
, pkg-config
, unittest-cpp
, xa
}:
stdenv.mkDerivation (finalAttrs: {
@@ -28,14 +29,30 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-1e1QDSJ8CjLU794saba2auCKko7p2ylrdI0JWhh8Kco=";
};
outputs = [
"out"
] ++ lib.optionals docSupport [
"doc"
];
patches = [
# Pull autoconf-2.72 compatibility fix:
# https://github.com/libsidplayfp/libsidplayfp/pull/103
# Remove when version > 2.5.1
(fetchpatch {
name = "autoconf-2.72";
url = "https://github.com/libsidplayfp/libsidplayfp/commit/b8fff55f6aaa005a3899b59e70cd8730f962641b.patch";
name = "0001-libsidplayfp-autoconf-2.72-compat.patch";
url = "https://github.com/libsidplayfp/libsidplayfp/commit/2b1b41beb5099d5697e3f8416d78f27634732a9e.patch";
hash = "sha256-5Hk202IuHUBow7HnnPr2/ieWFjKDuHLQjQ9mJUML9q8=";
})
# Fix --disable-tests logic
# https://github.com/libsidplayfp/libsidplayfp/pull/108
# Remove when version > 2.5.1
(fetchpatch {
name = "0002-libsidplayfp-Fix-autoconf-logic-for-tests-option.patch";
url = "https://github.com/libsidplayfp/libsidplayfp/commit/39dd2893b6186c4932d17b529bb62627b742b742.patch";
hash = "sha256-ErdfPvu8R81XxdHu2TaV87OpLFlRhJai51QcYUIkUZ4=";
})
];
postPatch = ''
@@ -44,30 +61,35 @@ stdenv.mkDerivation (finalAttrs: {
strictDeps = true;
nativeBuildInputs = [ autoreconfHook pkg-config perl xa ]
++ lib.optionals docSupport [ doxygen graphviz ];
nativeBuildInputs = [
autoreconfHook
perl
pkg-config
xa
] ++ lib.optionals docSupport [
doxygen
graphviz
];
buildInputs = [ libgcrypt libexsid ];
buildInputs = [
libexsid
libgcrypt
];
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
checkInputs = [ unittest-cpp ];
checkInputs = [
unittest-cpp
];
enableParallelBuilding = true;
installTargets = [ "install" ]
++ lib.optionals docSupport [ "doc" ];
outputs = [ "out" ]
++ lib.optionals docSupport [ "doc" ];
configureFlags = [
"--enable-hardsid"
"--with-gcrypt"
"--with-exsid"
]
++ lib.optional finalAttrs.finalPackage.doCheck "--enable-tests";
(lib.strings.enableFeature true "hardsid")
(lib.strings.withFeature true "gcrypt")
(lib.strings.withFeature true "exsid")
(lib.strings.enableFeature finalAttrs.finalPackage.doCheck "tests")
];
# Make Doxygen happy with the setup, reduce log noise
FONTCONFIG_FILE = lib.optionalString docSupport (makeFontsConf { fontDirectories = [ ]; });
preBuild = ''
@@ -75,12 +97,21 @@ stdenv.mkDerivation (finalAttrs: {
export XDG_CACHE_HOME=$TMPDIR
'';
buildFlags = [
"all"
] ++ lib.optionals docSupport [
"doc"
];
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
postInstall = lib.optionalString docSupport ''
mkdir -p $doc/share/doc/libsidplayfp
mv docs/html $doc/share/doc/libsidplayfp/
'';
passthru = {
tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
updateScript = nix-update-script { };
};
@@ -96,5 +127,9 @@ stdenv.mkDerivation (finalAttrs: {
license = with licenses; [ gpl2Plus ];
maintainers = with maintainers; [ ramkromberg OPNA2608 ];
platforms = platforms.all;
pkgConfigModules = [
"libsidplayfp"
"libstilview"
];
};
})