[arch-commits] Commit in fwupdate/trunk (7 files)

Bruno Pagani archange at archlinux.org
Tue Feb 27 18:26:43 UTC 2018


    Date: Tuesday, February 27, 2018 @ 18:26:42
  Author: archange
Revision: 299345

upgpkg: fwupdate 10-1

Remove patches, they are part of this release.
Propose hooks for managing upgrade.
Move instructions to wiki.

Added:
  fwupdate/trunk/esp-as-boot-efi.hook
  fwupdate/trunk/esp-as-boot.hook
Modified:
  fwupdate/trunk/PKGBUILD
  fwupdate/trunk/fwupdate.install
Deleted:
  fwupdate/trunk/create-fw-directory.patch
  fwupdate/trunk/fix-sprintf-formatting.patch
  fwupdate/trunk/fix-uninitialized-variable.patch

----------------------------------+
 PKGBUILD                         |   41 ++++++++++--------------
 create-fw-directory.patch        |   62 -------------------------------------
 esp-as-boot-efi.hook             |   10 +++++
 esp-as-boot.hook                 |   10 +++++
 fix-sprintf-formatting.patch     |   62 -------------------------------------
 fix-uninitialized-variable.patch |   37 ----------------------
 fwupdate.install                 |   11 ++----
 7 files changed, 41 insertions(+), 192 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2018-02-27 18:18:19 UTC (rev 299344)
+++ PKGBUILD	2018-02-27 18:26:42 UTC (rev 299345)
@@ -1,9 +1,9 @@
-# Maintainer: Bruno Pagani (a.k.a. ArchangeGabriel) <archange at archlinux.org>
+# Maintainer: Bruno Pagani <archange at archlinux.org>
 # Contributor: Mirco Tischler <mt-ml at gmx dot de>
 
 pkgname=fwupdate
-pkgver=9
-pkgrel=3
+pkgver=10
+pkgrel=1
 pkgdesc="Tools for using the ESRT and UpdateCapsule() to apply firmware updates"
 arch=('x86_64')
 url="https://github.com/rhinstaller/fwupdate"
@@ -11,24 +11,15 @@
 depends=('efivar' 'libsmbios' 'bash')
 makedepends=('pesign' 'gnu-efi-libs')
 source=("${url}/releases/download/${pkgver}/${pkgname}-${pkgver}.tar.bz2"
-	    'fix-uninitialized-variable.patch'
-	    'fix-sprintf-formatting.patch'
-        'create-fw-directory.patch')
-sha256sums=('e926a7b33a58f5dbf029a5a687375e88b18a41f0742ba871aff7d1d82d075c87'
-            '56d27c36b7f1178c818c37153e3dbdd0a26036366b3dc935cd169b0c716cb610'
-            '639114a5d98c688f92c59d08aac1b182da705ad443c8b1367160c7a8c4fcd115'
-            '980ee0b2f08bea482575bfd6323dae907f44ff1ce2981f743c014809fb51b8d2')
+        'esp-as-boot.hook'
+        'esp-as-boot-efi.hook')
+sha256sums=('73f42c6097049ab4490e88bd7742ac962f892e6660ee2af40254605d011ef33a'
+            '28deb79162c937a6c3d08c0f685b5de9bcf95bfd3511bb8bf00f2680d95b6b9c'
+            '49c16618fe4524d0c1f32e1df4f18bab3f9ed0ee7c2565457fd6643f6d70da00')
 install=fwupdate.install
 
 _efidir=arch
 
-prepare() {
-    cd ${pkgname}-${pkgver}
-    patch -p1 -i ../fix-uninitialized-variable.patch
-    patch -p1 -i ../fix-sprintf-formatting.patch
-    patch -p1 -i ../create-fw-directory.patch
-}
-
 build() {
     cd ${pkgname}-${pkgver}
     make EFIDIR="${_efidir}" GNUEFIDIR=/usr/lib
@@ -39,11 +30,13 @@
 
     make LIBDIR=/usr/lib EFIDIR="${_efidir}" DESTDIR="${pkgdir}" libexecdir=/usr/lib/ install
 
-    # Do not install anything under /boot. Copy files to /usr/lib/fwupdate for manual installation.
-    install -d ${pkgdir}/usr/lib/fwupdate
-    mv ${pkgdir}/boot/efi/EFI ${pkgdir}/usr/lib/fwupdate/EFI
-    rm -rf ${pkgdir}/boot
-    rm -rf ${pkgdir}/usr/src
-    rm -rf ${pkgdir}/usr/lib/debug
-    rmdir  ${pkgdir}/usr/share/fwupdate
+    # Do not install anything under /boot. Copy files to /usr/lib/fwupdate for manual or hook installation.
+    install -d "${pkgdir}"/usr/{lib,share/doc}/${pkgname}
+    mv "${pkgdir}"/boot/efi/EFI "${pkgdir}"/usr/lib/${pkgname}/EFI
+    rm -rf "${pkgdir}"/boot
+    rm -rf "${pkgdir}"/usr/src
+    rm -rf "${pkgdir}"/usr/lib/debug
+    cd ..
+    install -Dm644 esp-as-boot.hook -t "${pkgdir}"/usr/share/doc/${pkgname}/
+    install -Dm644 esp-as-boot-efi.hook -t "${pkgdir}"/usr/share/doc/${pkgname}/
 }

Deleted: create-fw-directory.patch
===================================================================
--- create-fw-directory.patch	2018-02-27 18:18:19 UTC (rev 299344)
+++ create-fw-directory.patch	2018-02-27 18:26:42 UTC (rev 299345)
@@ -1,62 +0,0 @@
-From f713884b1766396aab4f0fb75a7cc7b8cb8319bb Mon Sep 17 00:00:00 2001
-From: Mario Limonciello <mario.limonciello at dell.com>
-Date: Tue, 11 Jul 2017 10:35:37 -0500
-Subject: [PATCH] create the 'fw' directory on the ESP if it doesn't exist
-
----
- linux/libfwup.c | 24 +++++++++++++++++++++---
- 1 file changed, 21 insertions(+), 3 deletions(-)
-
-diff --git a/linux/libfwup.c b/linux/libfwup.c
-index 4aa2bf3..d37f644 100644
---- a/linux/libfwup.c
-+++ b/linux/libfwup.c
-@@ -1177,6 +1177,8 @@ get_existing_media_path(update_info *info)
- static int
- get_fd_and_media_path(update_info *info, char **path)
- {
-+	struct stat st;
-+	char *directory = NULL;
- 	char *fullpath = NULL;
- 	int fd = -1;
- 	int rc;
-@@ -1193,13 +1195,28 @@ get_fd_and_media_path(update_info *info, char **path)
- 		}
- 	} else {
- 		/* fall back to creating a new file from scratch */
--		rc = asprintf(&fullpath,
--			      "/boot/efi/EFI/%s/fw/fwupdate-XXXXXX.cap",
-+		rc = asprintf(&directory,
-+			      "/boot/efi/EFI/%s/fw",
- 			      FWUP_EFI_DIR_NAME);
- 		if (rc < 0) {
--			efi_error("asprintf failed");
-+			efi_error("asprintf directory failed");
- 			return fd;
- 		}
-+		if (stat(directory, &st) != 0 ||
-+		    (st.st_mode & S_IFDIR) == 0) {
-+			rc = mkdir(directory, 0775);
-+			if (rc < 0) {
-+				efi_error("failed to make %s", directory);
-+				goto out;
-+			}
-+		}
-+		rc = asprintf(&fullpath,
-+			      "%s/fwupdate-XXXXXX.cap",
-+			      directory);
-+		if (rc < 0) {
-+			efi_error("asprintf fullpath failed");
-+			goto out;
-+		}
- 		fd = mkostemps(fullpath, 4, O_CREAT|O_TRUNC|O_CLOEXEC);
- 		if (fd < 0) {
- 			efi_error("mkostemps(%s) failed", fullpath);
-@@ -1213,6 +1230,7 @@ get_fd_and_media_path(update_info *info, char **path)
- 		fullpath = NULL;
- 	}
- out:
-+	free(directory);
- 	free(fullpath);
- 	return fd;
- }

Added: esp-as-boot-efi.hook
===================================================================
--- esp-as-boot-efi.hook	                        (rev 0)
+++ esp-as-boot-efi.hook	2018-02-27 18:26:42 UTC (rev 299345)
@@ -0,0 +1,10 @@
+[Trigger]
+Type = Pacakge
+Operation = Install
+Operation = Upgrade
+Target = fwupdate
+
+[Action]
+Description = Copying fwupdate to EFI directory...
+When = PostTransaction
+Exec = /usr/bin/cp -r /usr/lib/fwupdate/EFI /boot/efi

Added: esp-as-boot.hook
===================================================================
--- esp-as-boot.hook	                        (rev 0)
+++ esp-as-boot.hook	2018-02-27 18:26:42 UTC (rev 299345)
@@ -0,0 +1,10 @@
+[Trigger]
+Type = Pacakge
+Operation = Install
+Operation = Upgrade
+Target = fwupdate
+
+[Action]
+Description = Copying fwupdate to EFI directory...
+When = PostTransaction
+Exec = /usr/bin/cp -r /usr/lib/fwupdate/EFI /boot

Deleted: fix-sprintf-formatting.patch
===================================================================
--- fix-sprintf-formatting.patch	2018-02-27 18:18:19 UTC (rev 299344)
+++ fix-sprintf-formatting.patch	2018-02-27 18:26:42 UTC (rev 299345)
@@ -1,62 +0,0 @@
-From cd8f7d79f84155d1dfbff3bb169558a8b06fb719 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones at redhat.com>
-Date: Fri, 19 May 2017 16:39:56 -0400
-Subject: [PATCH] Fix sprintf formatting for Boot####.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-If you give it enough compiler flags, gcc believes the following:
------------------------
-    libfwup.c: In function ‘set_up_boot_next’:
-    libfwup.c:1049:27: error: ‘__builtin___sprintf_chk’ may write a terminating nul past the end of the destination [-Werror=format-overflow=]
-       sprintf(boot_next_name, "Boot%04X", boot_next);
-                               ^~~~~~~~~~
-    In file included from /usr/include/stdio.h:939:0,
-                     from libfwup.c:17:
-    /usr/include/bits/stdio2.h:33:10: note: ‘__builtin___sprintf_chk’ output between 9 and 10 bytes into a destination of size 9
-       return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
-              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-           __bos (__s), __fmt, __va_arg_pack ());
-           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    cc1: all warnings being treated as errors
-    make[1]: *** [Makefile:70: libfwup.o] Error 1
-    make[1]: Leaving directory '/home/pjones/devel/rhel/fwupdate/fwupdate-9/linux'
-    make: *** [Makefile:10: all] Error 2
------------------------
-
-The code in question is:
------------------------
-		if (boot_next >= 0x10000) {
-			efi_error("no free boot variables!");
-			goto out;
-		}
-
-		sprintf(boot_next_name, "Boot%04X", boot_next);
------------------------
-
-It really should know it can't be a higher value than 0xffff.  Even
-so, while it's not true that this can happen, since we never get to that
-code if boot_next is > 0xffff, the compiler can't figure that out, so
-it's complaining about an int being crammed into 4 bytes of hex.
-
-So this patch just tells it the maximum value is 0xffff.
-
-Signed-off-by: Peter Jones <pjones at redhat.com>
----
- linux/libfwup.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/linux/libfwup.c b/linux/libfwup.c
-index 929c106..1b9b72a 100644
---- a/linux/libfwup.c
-+++ b/linux/libfwup.c
-@@ -1046,7 +1046,7 @@ set_up_boot_next(void)
- 			goto out;
- 		}
- 
--		sprintf(boot_next_name, "Boot%04X", boot_next);
-+		sprintf(boot_next_name, "Boot%04hX", boot_next & 0xffff);
- 		rc = efi_set_variable(efi_guid_global, boot_next_name, opt,
- 				      opt_size,
- 				      EFI_VARIABLE_NON_VOLATILE |

Deleted: fix-uninitialized-variable.patch
===================================================================
--- fix-uninitialized-variable.patch	2018-02-27 18:18:19 UTC (rev 299344)
+++ fix-uninitialized-variable.patch	2018-02-27 18:26:42 UTC (rev 299345)
@@ -1,37 +0,0 @@
-From a9bfbb4a082c2a7e8917865877976e8008712ca6 Mon Sep 17 00:00:00 2001
-From: Mirco Tischler <mt-ml at gmx.de>
-Date: Mon, 6 Mar 2017 23:45:46 +0100
-Subject: [PATCH] Fix uninitialized variable.
-
-If boot_order_size is 0, i was never set. On gcc-6.3.1, this broke the
-build if compiled with -O2 (-Werror=maybe_uninitialized). This is the
-error:
-
-libfwup.c: In function 'set_up_boot_next':
-libfwup.c:818:16: error: 'i' may be used uninitialized in this function [-Werror=maybe-uninitialized]
-  new_boot_order[i] = boot_entry;
-                ^
-libfwup.c:780:15: note: 'i' was declared here
-  unsigned int i;
-               ^
-cc1: all warnings being treated as errors
----
- linux/libfwup.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/linux/libfwup.c b/linux/libfwup.c
-index fe4ece4..2cc03c0 100644
---- a/linux/libfwup.c
-+++ b/linux/libfwup.c
-@@ -777,7 +777,7 @@ add_to_boot_order(uint16_t boot_entry)
- 	size_t boot_order_size = 0;
- 	uint32_t attr;
- 	int rc;
--	unsigned int i;
-+	unsigned int i = 0;
- 
- 	rc = efi_get_variable_size(efi_guid_global, "BootOrder",
- 				   &boot_order_size);
--- 
-2.12.0
-

Modified: fwupdate.install
===================================================================
--- fwupdate.install	2018-02-27 18:18:19 UTC (rev 299344)
+++ fwupdate.install	2018-02-27 18:26:42 UTC (rev 299345)
@@ -1,12 +1,9 @@
 post_install() {
-    cat EOF <<
-
-To use the EFI firmware update executable, copy the /usr/lib/fwupdate/EFI
-folder to your EFI partition, usually mounted at /boot or /boot/efi.
-
-EOF
+    echo "Please read https://wiki.archlinux.org/index.php/fwupd for things to setup before using fwupdate"
 }
 
 post_upgrade() {
-	post_install
+    if [ $(vercmp $2 10-1) -lt 0 ] ; then
+        post_install
+    fi
 }



More information about the arch-commits mailing list