From 3869ccbcc891a7185550a2a422e2db01fd994b7d Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Thu, 27 Jan 2022 13:25:39 +0100 Subject: [PATCH] tools: build bash on macOS and use it for ipkg-build On macOS, system binaries silently drop the environment variables for injecting extra shared libraries (used by fakeroot). This is done for security reasons. Work around this by building bash from source, so that it gets an ad-hoc signature and does not have these restrictions Signed-off-by: Felix Fietkau --- include/package-ipkg.mk | 2 +- tools/Makefile | 3 +++ tools/bash/Makefile | 21 +++++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 tools/bash/Makefile diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk index 362a0e2a8b..3063a86a28 100644 --- a/include/package-ipkg.mk +++ b/include/package-ipkg.mk @@ -264,7 +264,7 @@ $(_endef) endif $(INSTALL_DIR) $$(PDIR_$(1)) - $(FAKEROOT) $(SCRIPT_DIR)/ipkg-build -m "$(FILE_MODES)" $$(IDIR_$(1)) $$(PDIR_$(1)) + $(FAKEROOT) $(STAGING_DIR_HOST)/bin/bash $(SCRIPT_DIR)/ipkg-build -m "$(FILE_MODES)" $$(IDIR_$(1)) $$(PDIR_$(1)) @[ -f $$(IPKG_$(1)) ] $(1)-clean: diff --git a/tools/Makefile b/tools/Makefile index 686d5294d3..681344a014 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -80,6 +80,9 @@ ifneq ($(HOST_OS),Linux) $(curdir)/squashfskit4/compile += $(curdir)/coreutils/compile tools-y += coreutils endif +ifeq ($(HOST_OS),Darwin) + tools-y += bash +endif ifneq ($(CONFIG_CCACHE)$(CONFIG_SDK),) $(foreach tool, $(filter-out xz zstd pkgconf patch ninja meson libressl cmake,$(tools-y)), $(eval $(curdir)/$(tool)/compile += $(curdir)/ccache/compile)) diff --git a/tools/bash/Makefile b/tools/bash/Makefile new file mode 100644 index 0000000000..7c25b83327 --- /dev/null +++ b/tools/bash/Makefile @@ -0,0 +1,21 @@ +# +# Copyright (C) 2015 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +include $(TOPDIR)/rules.mk + +PKG_NAME:=bash +PKG_CPE_ID:=cpe:/a:gnu:bash +PKG_VERSION:=5.1.16 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=@GNU/bash +PKG_HASH:=5bac17218d3911834520dad13cd1f85ab944e1c09ae1aba55906be1f8192f558 + +HOST_BUILD_PARALLEL := 1 + +include $(INCLUDE_DIR)/host-build.mk + +$(eval $(call HostBuild))