From f9fbbd519e9cf1287c76d3122d0e8f738f17fdc7 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Sat, 12 Sep 2020 13:12:14 +0200 Subject: [PATCH] fwupd: clean up * reorder attributes to match standard * do not use package aliases * add some comments * fix license (https://github.com/fwupd/fwupd/issues/526) --- .../linux/firmware/fwupd/default.nix | 143 ++++++++++-------- 1 file changed, 76 insertions(+), 67 deletions(-) diff --git a/pkgs/os-specific/linux/firmware/fwupd/default.nix b/pkgs/os-specific/linux/firmware/fwupd/default.nix index 66edb34d2444..22d1c3625b7d 100644 --- a/pkgs/os-specific/linux/firmware/fwupd/default.nix +++ b/pkgs/os-specific/linux/firmware/fwupd/default.nix @@ -5,7 +5,7 @@ , fetchpatch , substituteAll , gtk-doc -, pkgconfig +, pkg-config , gobject-introspection , intltool , libgudev @@ -29,7 +29,7 @@ , libuuid , colord , docbook_xml_dtd_43 -, docbook_xsl +, docbook-xsl-nons , ninja , gcab , python3 @@ -67,10 +67,6 @@ let requests ]); - fontsConf = makeFontsConf { - fontDirectories = [ freefont_ttf ]; - }; - isx86 = stdenv.isx86_64 || stdenv.isi686; # Dell isn't supported on Aarch64 @@ -95,28 +91,53 @@ let pname = "fwupd"; version = "1.4.5"; - src = fetchurl { - url = "https://people.freedesktop.org/~hughsient/releases/fwupd-${version}.tar.xz"; - sha256 = "0hpqxwqbbqn440c2swpnc06z8dskisrli4ynsxrzzqyp0dan46xw"; - }; - # libfwupd goes to lib # daemon, plug-ins and libfwupdplugin go to out # CLI programs go to out outputs = [ "out" "lib" "dev" "devdoc" "man" "installedTests" ]; + src = fetchurl { + url = "https://people.freedesktop.org/~hughsient/releases/fwupd-${version}.tar.xz"; + sha256 = "0hpqxwqbbqn440c2swpnc06z8dskisrli4ynsxrzzqyp0dan46xw"; + }; + + patches = [ + # Do not try to create useless paths in /var. + ./fix-paths.patch + + # Allow installing + ./add-option-for-installation-sysconfdir.patch + + # Install plug-ins and libfwupdplugin to out, + # they are not really part of the library. + ./install-fwupdplugin-to-out.patch + + # Installed tests are installed to different output + # we also cannot have fwupd-tests.conf in $out/etc since it would form a cycle. + (substituteAll { + src = ./installed-tests-path.patch; + # Needs a different set of modules than po/make-images. + inherit installedTestsPython; + }) + + (fetchpatch { + url = "https://github.com/fwupd/fwupd/commit/3e82beeddac31292c50229e59e2404865edee5ad.patch"; + sha256 = "17p9r8qddqkrnhy9bvp9207afh5fcl1whn79nqcp57b4q4c17zgk"; + }) + ]; + nativeBuildInputs = [ meson ninja gtk-doc - pkgconfig + pkg-config gobject-introspection intltool shared-mime-info valgrind gcab docbook_xml_dtd_43 - docbook_xsl + docbook-xsl-nons help2man libxslt python @@ -152,55 +173,6 @@ let libsmbios ]; - patches = [ - ./fix-paths.patch - ./add-option-for-installation-sysconfdir.patch - - # Install plug-ins and libfwupdplugin to out, - # they are not really part of the library. - ./install-fwupdplugin-to-out.patch - - # Installed tests are installed to different output - # we also cannot have fwupd-tests.conf in $out/etc since it would form a cycle. - (substituteAll { - src = ./installed-tests-path.patch; - # Needs a different set of modules than po/make-images. - inherit installedTestsPython; - }) - - (fetchpatch { - url = "https://github.com/fwupd/fwupd/commit/3e82beeddac31292c50229e59e2404865edee5ad.patch"; - sha256 = "17p9r8qddqkrnhy9bvp9207afh5fcl1whn79nqcp57b4q4c17zgk"; - }) - ]; - - postPatch = '' - patchShebangs \ - contrib/get-version.py \ - contrib/generate-version-script.py \ - meson_post_install.sh \ - po/make-images \ - po/make-images.sh \ - po/test-deps - ''; - - # /etc/os-release not available in sandbox - # doCheck = true; - - preFixup = let - binPath = [ - efibootmgr - bubblewrap - tpm2-tools - ] ++ stdenv.lib.optional haveFlashrom flashrom; - in '' - gappsWrapperArgs+=( - --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" - # See programs reached with fu_common_find_program_in_path in source - --prefix PATH : "${stdenv.lib.makeBinPath binPath}" - ) - ''; - mesonFlags = [ "-Dgtkdoc=true" "-Dplugin_dummy=true" @@ -228,20 +200,57 @@ let "-Dplugin_flashrom=true" ]; - FONTCONFIG_FILE = fontsConf; # Fontconfig error: Cannot load default config file + # TODO: wrapGAppsHook wraps efi capsule even though it is not ELF + dontWrapGApps = true; + + # /etc/os-release not available in sandbox + # doCheck = true; + + # Environment variables + + # Fontconfig error: Cannot load default config file + FONTCONFIG_FILE = + let + fontsConf = makeFontsConf { + fontDirectories = [ freefont_ttf ]; + }; + in fontsConf; # error: “PolicyKit files are missing” # https://github.com/NixOS/nixpkgs/pull/67625#issuecomment-525788428 PKG_CONFIG_POLKIT_GOBJECT_1_ACTIONDIR = "/run/current-system/sw/share/polkit-1/actions"; - # TODO: wrapGAppsHook wraps efi capsule even though it is not elf - dontWrapGApps = true; + # Phase hooks + + postPatch = '' + patchShebangs \ + contrib/get-version.py \ + contrib/generate-version-script.py \ + meson_post_install.sh \ + po/make-images \ + po/make-images.sh \ + po/test-deps + ''; preCheck = '' addToSearchPath XDG_DATA_DIRS "${shared-mime-info}/share" ''; - # so we need to wrap the executables manually + preFixup = let + binPath = [ + efibootmgr + bubblewrap + tpm2-tools + ] ++ stdenv.lib.optional haveFlashrom flashrom; + in '' + gappsWrapperArgs+=( + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + # See programs reached with fu_common_find_program_in_path in source + --prefix PATH : "${stdenv.lib.makeBinPath binPath}" + ) + ''; + + # Since we had to disable wrapGAppsHook, we need to wrap the executables manually. postFixup = '' find -L "$out/bin" "$out/libexec" -type f -executable -print0 \ | while IFS= read -r -d ''' file; do @@ -312,7 +321,7 @@ let meta = with stdenv.lib; { homepage = "https://fwupd.org/"; maintainers = with maintainers; [ jtojnar ]; - license = [ licenses.gpl2 ]; + license = licenses.lgpl21Plus; platforms = platforms.linux; }; };