Date: Monday, September 4, 2017 @ 00:02:35 Author: archange Revision: 255624
Add a fix for creating a missing dir at runtime Added: fwupdate/trunk/create-fw-directory.patch Modified: fwupdate/trunk/PKGBUILD ---------------------------+ PKGBUILD | 9 ++++-- create-fw-directory.patch | 62 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 3 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2017-09-03 22:20:38 UTC (rev 255623) +++ PKGBUILD 2017-09-04 00:02:35 UTC (rev 255624) @@ -3,7 +3,7 @@ pkgname=fwupdate pkgver=9 -pkgrel=1 +pkgrel=2 pkgdesc="Tools for using the ESRT and UpdateCapsule() to apply firmware updates" arch=('i686' 'x86_64') url="https://github.com/rhinstaller/fwupdate" @@ -12,10 +12,12 @@ makedepends=('pesign' 'gnu-efi-libs') source=("${url}/releases/download/${pkgver}/${pkgname}-${pkgver}.tar.bz2" 'fix-uninitialized-variable.patch' - 'fix-sprintf-formatting.patch') + 'fix-sprintf-formatting.patch' + 'create-fw-directory.patch') sha256sums=('e926a7b33a58f5dbf029a5a687375e88b18a41f0742ba871aff7d1d82d075c87' '56d27c36b7f1178c818c37153e3dbdd0a26036366b3dc935cd169b0c716cb610' - '639114a5d98c688f92c59d08aac1b182da705ad443c8b1367160c7a8c4fcd115') + '639114a5d98c688f92c59d08aac1b182da705ad443c8b1367160c7a8c4fcd115' + 'fabe3dd8755cd73955893a4dc22cc9ff8965b5a873e2af7f781421fced3dc0ec') install=fwupdate.install _efidir=arch @@ -24,6 +26,7 @@ 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() { Added: create-fw-directory.patch =================================================================== --- create-fw-directory.patch (rev 0) +++ create-fw-directory.patch 2017-09-04 00:02:35 UTC (rev 255624) @@ -0,0 +1,62 @@ +From f713884b1766396aab4f0fb75a7cc7b8cb8319bb Mon Sep 17 00:00:00 2001 +From: Mario Limonciello <mario.limoncie...@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, ++ "/boot/efi/EFI/%s/fw/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; + }