![Ricardo Martincoski](/assets/img/avatar_default.png)
When a file is listed to be installed but is missing from the package source currently the first tar command exits with error code but it is ignored and the build succeeds. This issue by itself is minor because those listed files that are present in the package source get installed to the target. But the code is currently error prone, e.g. to a typo in the file list. Fix this by first creating a tarball in the build directory and then installing it, instead of using a pipe between the two tar invocations. Also use && between the commands, so the first command that exits with error code fails the build. Since the two tar invocations remain in use, the desired behavior remains the same: - list of files can contain *; - list of files can contain file inside path, and the path is then replicated in the target; - symlinks are not followed but are installed. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Sergey Matyukevich <geomatsi@gmail.com> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
54 lines
1.5 KiB
Makefile
54 lines
1.5 KiB
Makefile
################################################################################
|
|
#
|
|
# armbian-firmware
|
|
#
|
|
################################################################################
|
|
|
|
ARMBIAN_FIRMWARE_VERSION = 455d6b6701178dafe7fd0168eb4a4ef78a8d24a3
|
|
ARMBIAN_FIRMWARE_SITE = https://github.com/armbian/firmware
|
|
ARMBIAN_FIRMWARE_SITE_METHOD = git
|
|
|
|
# XR819 WiFi firmware
|
|
ifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_XR819),y)
|
|
ARMBIAN_FIRMWARE_FILES += \
|
|
xr819/boot_xr819.bin \
|
|
xr819/fw_xr819.bin \
|
|
xr819/sdd_xr819.bin
|
|
endif
|
|
|
|
# AP6212 WiFi/BT combo firmware
|
|
ifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6212),y)
|
|
ARMBIAN_FIRMWARE_DIRS += ap6212
|
|
endif
|
|
|
|
ifneq ($(ARMBIAN_FIRMWARE_FILES),)
|
|
define ARMBIAN_FIRMWARE_INSTALL_FILES
|
|
cd $(@D) && \
|
|
$(TAR) cf install.tar $(sort $(ARMBIAN_FIRMWARE_FILES)) && \
|
|
$(TAR) xf install.tar -C $(TARGET_DIR)/lib/firmware
|
|
endef
|
|
endif
|
|
|
|
ifneq ($(ARMBIAN_FIRMWARE_DIRS),)
|
|
# We need to rm -rf the destination directory to avoid copying
|
|
# into it in itself, should we re-install the package.
|
|
define ARMBIAN_FIRMWARE_INSTALL_DIRS
|
|
$(foreach d,$(ARMBIAN_FIRMWARE_DIRS), \
|
|
rm -rf $(TARGET_DIR)/lib/firmware/$(d); \
|
|
cp -a $(@D)/$(d) $(TARGET_DIR)/lib/firmware/$(d)$(sep))
|
|
endef
|
|
endif
|
|
|
|
ifneq ($(ARMBIAN_FIRMWARE_FILES)$(ARMBIAN_FIRMWARE_DIRS),)
|
|
ARMBIAN_FIRMWARE_LICENSE = PROPRIETARY
|
|
ARMBIAN_FIRMWARE_REDISTRIBUTE = NO
|
|
endif
|
|
|
|
define ARMBIAN_FIRMWARE_INSTALL_TARGET_CMDS
|
|
mkdir -p $(TARGET_DIR)/lib/firmware
|
|
$(ARMBIAN_FIRMWARE_INSTALL_FILES)
|
|
$(ARMBIAN_FIRMWARE_INSTALL_DIRS)
|
|
endef
|
|
|
|
$(eval $(generic-package))
|