summary refs log tree commit diff
path: root/pkgs/os-specific/linux/firmware
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2018-02-17 00:52:09 +0100
committerJan Tojnar <jtojnar@gmail.com>2018-02-22 13:18:21 +0100
commit41e85ef889934ab61f2ddcfea880c04aafd8dbf9 (patch)
treea62056c5796b2a543cbfc4abe77e78498dccaaf5 /pkgs/os-specific/linux/firmware
parent8b1cf100cd8badad6e1b6d4650b904b88aa870db (diff)
downloadnixlib-41e85ef889934ab61f2ddcfea880c04aafd8dbf9.tar
nixlib-41e85ef889934ab61f2ddcfea880c04aafd8dbf9.tar.gz
nixlib-41e85ef889934ab61f2ddcfea880c04aafd8dbf9.tar.bz2
nixlib-41e85ef889934ab61f2ddcfea880c04aafd8dbf9.tar.lz
nixlib-41e85ef889934ab61f2ddcfea880c04aafd8dbf9.tar.xz
nixlib-41e85ef889934ab61f2ddcfea880c04aafd8dbf9.tar.zst
nixlib-41e85ef889934ab61f2ddcfea880c04aafd8dbf9.zip
fwupdate: 8 → 10
Diffstat (limited to 'pkgs/os-specific/linux/firmware')
-rw-r--r--pkgs/os-specific/linux/firmware/fwupdate/default.nix99
-rw-r--r--pkgs/os-specific/linux/firmware/fwupdate/do-not-create-sharedstatedir.patch10
-rw-r--r--pkgs/os-specific/linux/firmware/fwupdate/fix-paths.patch116
3 files changed, 188 insertions, 37 deletions
diff --git a/pkgs/os-specific/linux/firmware/fwupdate/default.nix b/pkgs/os-specific/linux/firmware/fwupdate/default.nix
index f2bb9bddd578..fd0d222eaac8 100644
--- a/pkgs/os-specific/linux/firmware/fwupdate/default.nix
+++ b/pkgs/os-specific/linux/firmware/fwupdate/default.nix
@@ -1,37 +1,62 @@
-{ stdenv, fetchurl, gnu-efi, efivar, libsmbios, popt, pkgconfig
-, gettext }:
-let version = "8"; in
-  stdenv.mkDerivation
-    { name = "fwupdate-${version}";
-      src = fetchurl
-        { url = "https://github.com/rhinstaller/fwupdate/releases/download/${version}/fwupdate-${version}.tar.bz2";
-          sha256 = "10q8k1kghvbcb5fwcl2smzp8vqdfzimx9dkk0c3hz39py1phy4n8";
-        };
-      makeFlags =
-        [ "EFIDIR=nixos"
-          "LIBDIR=$(out)/lib"
-          "GNUEFIDIR=${gnu-efi}/lib"
-          "TARGETDIR=$(out)/boot/efi/nixos/"
-          "prefix=$(out)/"
-        ];
-  nativeBuildInputs = [ pkgconfig ];
-      buildInputs = [ gnu-efi libsmbios popt gettext ];
-      propagatedBuildInputs = [ efivar ];
-      # TODO: Just apply the disable to the efi subdir
-      hardeningDisable = [ "all" ];
-      patchPhase = ''
-        sed -i 's|/usr/include/smbios_c/token.h|smbios_c/token.h|' \
-          linux/libfwup.c
-        sed -i 's|/usr/share|$(prefix)share|' linux/Makefile
-        sed -i "s|/usr/include|$out/include|" linux/fwup.pc.in
-        find . -type f -print0 | xargs -0 sed -i -e 's|/boot/efi|/boot|g' -e 's|/boot/efi/EFI|/boot/EFI|g'
-      '';
-      configurePhase = ''
-        arch=$(cc -dumpmachine | cut -f1 -d- | sed 's,i[3456789]86,ia32,' )
-        export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${gnu-efi}/include/efi -I${efivar}/include/efivar -I${gnu-efi}/include/efi/$arch"
-      '';
-      meta =
-        { license = [ stdenv.lib.licenses.gpl2 ];
-          platforms = stdenv.lib.platforms.linux;
-        };
-    }
+{ efivar, fetchurl, gettext, gnu-efi, libsmbios, pkgconfig, popt, stdenv }:
+let
+  version = "10";
+in stdenv.mkDerivation {
+  name = "fwupdate-${version}";
+  src = fetchurl {
+    url = "https://github.com/rhinstaller/fwupdate/releases/download/${version}/fwupdate-${version}.tar.bz2";
+    sha256 = "0fpk3q0msq2l0bs2mvk0cqp8jbwnmi17ggc81r4v96h4jxh2rx3k";
+  };
+
+  patches = [
+    # https://github.com/rhboot/fwupdate/pull/99
+    ./fix-paths.patch
+    ./do-not-create-sharedstatedir.patch
+  ];
+
+  NIX_CFLAGS_COMPILE = [ "-I${gnu-efi}/include/efi" ];
+
+  # TODO: Just apply the disable to the efi subdir
+  hardeningDisable = [ "stackprotector" ];
+
+  makeFlags = [
+    "EFIDIR=nixos"
+    "prefix=$(out)"
+    "LIBDIR=$(out)/lib"
+    "GNUEFIDIR=${gnu-efi}/lib"
+    "ESPMOUNTPOINT=$(out)/boot"
+  ];
+
+  nativeBuildInputs = [
+    pkgconfig
+    gettext
+  ];
+
+  buildInputs = [
+    gnu-efi
+    libsmbios
+    popt
+  ];
+
+  propagatedBuildInputs = [
+    efivar
+  ];
+
+  # TODO: fix wrt cross-compilation
+  preConfigure = ''
+    arch=$(cc -dumpmachine | cut -f1 -d- | sed 's,i[3456789]86,ia32,' )
+    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${gnu-efi}/include/efi/$arch"
+  '';
+
+  postInstall = ''
+    rm -rf $out/src
+    rm -rf $out/lib/debug
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Tools for using the ESRT and UpdateCapsule() to apply firmware updates";
+    maintainers = with maintainers; [ ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/os-specific/linux/firmware/fwupdate/do-not-create-sharedstatedir.patch b/pkgs/os-specific/linux/firmware/fwupdate/do-not-create-sharedstatedir.patch
new file mode 100644
index 000000000000..b8588ef2b11a
--- /dev/null
+++ b/pkgs/os-specific/linux/firmware/fwupdate/do-not-create-sharedstatedir.patch
@@ -0,0 +1,10 @@
+--- a/linux/Makefile
++++ b/linux/Makefile
+@@ -131,7 +131,6 @@
+ 		ln -fs $(x) $(patsubst %.so.1.$(VERSION),%.so.1,$(DESTDIR)$(libdir)/$(x)) ;\
+ 		ln -fs $(x) $(patsubst %.so.1.$(VERSION),%.so,$(DESTDIR)$(libdir)/$(x)) ;\
+ 		)
+-	$(INSTALL) -d -m 755 $(DESTDIR)$(sharedstatedir)/fwupdate/
+ 	$(INSTALL) -d -m 755 $(DESTDIR)$(libexecdir)/fwupdate/
+ 	$(INSTALL) -m 755 cleanup $(DESTDIR)$(libexecdir)/fwupdate/cleanup
+ 	$(INSTALL) -d -m 755 $(DESTDIR)$(libdatadir)/systemd/system
diff --git a/pkgs/os-specific/linux/firmware/fwupdate/fix-paths.patch b/pkgs/os-specific/linux/firmware/fwupdate/fix-paths.patch
new file mode 100644
index 000000000000..b01dfa355ef7
--- /dev/null
+++ b/pkgs/os-specific/linux/firmware/fwupdate/fix-paths.patch
@@ -0,0 +1,116 @@
+--- a/Make.defaults
++++ b/Make.defaults
+@@ -18,19 +18,20 @@
+ ABIDIFF		:= abidiff
+ ABIDW		:= abidw
+ prefix		?= /usr/
+-prefix		:= $(abspath $(prefix))/
++prefix		:= $(abspath $(prefix))
++exec_prefix		?= $(prefix)
+ ARCH		= $(shell $(CC) -dumpmachine | cut -f1 -d- | sed s,i[3456789]86,ia32,)
+ ifeq ($(ARCH),x86_64)
+-  LIBDIR	?= $(prefix)lib64
++  LIBDIR	?= $(exec_prefix)/lib64
+ endif
+ ifeq ($(ARCH),ia32)
+-  LIBDIR	?= $(prefix)lib
++  LIBDIR	?= $(exec_prefix)/lib
+ endif
+ ifeq ($(ARCH),aarch64)
+-  LIBDIR	?= $(prefix)lib64
++  LIBDIR	?= $(exec_prefix)/lib64
+ endif
+ ifeq ($(ARCH),arm)
+-  LIBDIR	?= $(prefix)lib
++  LIBDIR	?= $(exec_prefix)/lib
+ endif
+ LIBDIR		?= unknown
+ ifeq ($(LIBDIR),unknown)
+@@ -45,13 +46,13 @@
+ GNUEFIDIR	?= $(LIBDIR)/gnuefi
+ libdir		?= $(LIBDIR)
+ pcdir		?= $(libdir)/pkgconfig
+-mandir		?= $(prefix)share/man
+-includedir	?= $(prefix)include
+-bindir		?= $(prefix)bin
+-datadir 	?= $(prefix)share
++mandir		?= $(prefix)/share/man
++includedir	?= $(prefix)/include
++bindir		?= $(exec_prefix)/bin
++datadir 	?= $(prefix)/share
+ localedir	?= $(datadir)/locale
+-libexecdir	?= $(prefix)libexec
+-libdatadir	?= $(prefix)lib
++libexecdir	?= $(exec_prefix)/libexec
++libdatadir	?= $(exec_prefix)/lib
+ sharedstatedir	?= /var/lib
+ 
+ EFIDIR		?= $(shell x=$$(which --skip-alias --skip-functions git 2>/dev/null) ; [ -n "$$x" ] && git config --get fwupdate.efidir)
+@@ -63,8 +64,8 @@
+ 	ESPMOUNTPOINT = "/boot/efi"
+ endif
+ 
+-DEBUGINFO	?= $(prefix)lib/debug
+-DEBUGSOURCE	?= $(prefix)src/debug
++DEBUGINFO	?= $(exec_prefix)/lib/debug
++DEBUGSOURCE	?= $(prefix)/src/debug
+ TARGETDIR	?= $(ESPMOUNTPOINT)/EFI/$(EFIDIR)
+ 
+ .PHONY: check_efidir_error
+--- a/linux/Makefile
++++ b/linux/Makefile
+@@ -93,16 +93,19 @@
+ 	sed -e "s,@@VERSION@@,$(VERSION),g" \
+ 		-e "s,@@FWUP_MAJOR_VERSION@@,$(MAJOR_VERSION),g" \
+ 		-e "s,@@FWUP_MINOR_VERSION@@,$(MINOR_VERSION),g" \
++		-e "s,@@PREFIX@@,$(prefix),g" \
++		-e "s,@@EXEC_PREFIX@@,$(exec_prefix),g" \
+ 		-e "s,@@SHAREDSTATEDIR@@,$(sharedstatedir),g" \
+ 		-e "s,@@ESPMOUNTPOINT@@,$(ESPMOUNTPOINT),g" \
+ 		-e "s,@@EFIDIR@@,$(EFIDIR),g" \
+ 		-e "s,@@LIBDIR@@,$(libdir),g" \
+ 		-e "s,@@LIBEXECDIR@@,$(libexecdir),g" \
++		-e "s,@@INCLUDEDIR@@,$(includedir),g" \
+ 		$< > $@
+ 
+ tester : tester.c
+-	$(CC) -Wall -Werror -ggdb -L. -I./include -I/usr/include/efivar \
+-		-lefivar -lfwup -o $@ $^
++	$(CC) -Wall -Werror -ggdb -L. -I./include $(shell $(PKG_CONFIG) --cflags efivar) \
++		$(shell $(PKG_CONFIG) --libs efivar) -lfwup -o $@ $^
+ 
+ test : tester
+ 	LD_LIBRARY_PATH=$(shell pwd) ./tester
+@@ -134,6 +137,6 @@
+ 	$(INSTALL) -d -m 755 $(DESTDIR)$(libdatadir)/systemd/system
+ 	$(INSTALL) -m 644 cleanup.service \
+ 		$(DESTDIR)$(libdatadir)/systemd/system/fwupdate-cleanup.service
+-	$(INSTALL) -d -m 755 $(DESTDIR)/usr/share/bash-completion/completions/
++	$(INSTALL) -d -m 755 $(DESTDIR)$(datadir)/bash-completion/completions/
+ 	$(INSTALL) -m 755 $(VPATH)/bash-completion \
+-		$(DESTDIR)/usr/share/bash-completion/completions/fwupdate
++		$(DESTDIR)$(datadir)/bash-completion/completions/fwupdate
+--- a/linux/fwup.pc.in
++++ b/linux/fwup.pc.in
+@@ -1,7 +1,7 @@
+-prefix=/usr
+-exec_prefix=/usr
++prefix=@@PREFIX@@
++exec_prefix=@@EXEC_PREFIX@@
+ libdir=@@LIBDIR@@
+-includedir=/usr/include
++includedir=@@INCLUDEDIR@@
+ 
+ Name: fwup
+ Description: Library for deployment of UEFI firmware updates.
+--- a/linux/libfwup.c
++++ b/linux/libfwup.c
+@@ -35,7 +35,7 @@
+ 
+ #include <dell-wmi-smi.h>
+ #ifdef FWUPDATE_HAVE_LIBSMBIOS__
+-#include </usr/include/smbios_c/token.h>
++#include <smbios_c/token.h>
+ #include <smbios_c/smi.h>
+ #endif
+