瀏覽代碼

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 <[email protected]>
Felix Fietkau 3 年之前
父節點
當前提交
3869ccbcc8
共有 3 個文件被更改,包括 25 次插入1 次删除
  1. 1 1
      include/package-ipkg.mk
  2. 3 0
      tools/Makefile
  3. 21 0
      tools/bash/Makefile

+ 1 - 1
include/package-ipkg.mk

@@ -264,7 +264,7 @@ $(_endef)
     endif
     endif
 
 
 	$(INSTALL_DIR) $$(PDIR_$(1))
 	$(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)) ]
 	@[ -f $$(IPKG_$(1)) ]
 
 
     $(1)-clean:
     $(1)-clean:

+ 3 - 0
tools/Makefile

@@ -80,6 +80,9 @@ ifneq ($(HOST_OS),Linux)
   $(curdir)/squashfskit4/compile += $(curdir)/coreutils/compile
   $(curdir)/squashfskit4/compile += $(curdir)/coreutils/compile
   tools-y += coreutils
   tools-y += coreutils
 endif
 endif
+ifeq ($(HOST_OS),Darwin)
+  tools-y += bash
+endif
 
 
 ifneq ($(CONFIG_CCACHE)$(CONFIG_SDK),)
 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))
 $(foreach tool, $(filter-out xz zstd pkgconf patch ninja meson libressl cmake,$(tools-y)), $(eval $(curdir)/$(tool)/compile += $(curdir)/ccache/compile))

+ 21 - 0
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))