Skip to content

Commit

Permalink
fwupd: clean up
Browse files Browse the repository at this point in the history
* reorder attributes to match standard
* do not use package aliases
* add some comments
* fix license (fwupd/fwupd#526)
  • Loading branch information
jtojnar committed Sep 12, 2020
1 parent f66d92b commit f9fbbd5
Showing 1 changed file with 75 additions and 66 deletions.
141 changes: 75 additions & 66 deletions pkgs/os-specific/linux/firmware/fwupd/default.nix
Expand Up @@ -5,7 +5,7 @@
, fetchpatch
, substituteAll
, gtk-doc
, pkgconfig
, pkg-config
, gobject-introspection
, intltool
, libgudev
Expand All @@ -29,7 +29,7 @@
, libuuid
, colord
, docbook_xml_dtd_43
, docbook_xsl
, docbook-xsl-nons
, ninja
, gcab
, python3
Expand Down Expand Up @@ -67,10 +67,6 @@ let
requests
]);

fontsConf = makeFontsConf {
fontDirectories = [ freefont_ttf ];
};

isx86 = stdenv.isx86_64 || stdenv.isi686;

# Dell isn't supported on Aarch64
Expand All @@ -95,28 +91,53 @@ let
pname = "fwupd";
version = "1.4.5";

# 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";
};

# libfwupd goes to lib
# daemon, plug-ins and libfwupdplugin go to out
# CLI programs go to out
outputs = [ "out" "lib" "dev" "devdoc" "man" "installedTests" ];
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
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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;
};
};
Expand Down

0 comments on commit f9fbbd5

Please sign in to comment.