mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-28 01:28:59 +00:00
f58d323534
Currently the global variable PKG_FILE_MODES is used for all ipkg creations. This works for Makefiles which output a single package, or variants of a single package. But if a Makefile outputs multiple packages that each contain different files, setting PKG_FILE_MODES causes build failure when any of the files in the variable do not exist in the folder that is currently being packaged. Example: /openwrt/staging_dir/host/bin/fakeroot -l /openwrt/staging_dir/host/lib/libfakeroot.so -f /openwrt/staging_dir/host/bin/faked /openwrt/scripts/ipkg-build -m "/usr/lib/mariadb/plugin/auth_pam_tool_dir:root:376:0750" /openwrt/build_dir/target-mips_24kc_musl/mariadb-10.4.13/ipkg-mips_24kc/mariadb-server-plugin-disks /openwrt/bin/packages/mips_24kc/packages +chown: cannot access '/openwrt/build_dir/target-mips_24kc_musl/mariadb-10.4.13/ipkg-mips_24kc/mariadb-server-plugin-disks//usr/lib/mariadb/plugin/auth_pam_tool_dir': No such file or directory This commit changes the file mode handling a bit. The file mode can now be set either globally via PKG_FILE_MODES (no behavior change) or on a per-package basis via FILE_MODES. This way specific file modes can be used for any particular package. This behavior is already used for other OpenWrt variables, hence it is familiar: PKG_MAINTAINER vs MAINTAINER PKG_SOURCE_SUBDIR vs SUBDIR PKG_LICENSE vs LICENSE ... Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
166 lines
3.8 KiB
Makefile
166 lines
3.8 KiB
Makefile
#
|
|
# Copyright (C) 2006 OpenWrt.org
|
|
#
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
#
|
|
|
|
PKG_DEFAULT_DEPENDS = +libc +USE_GLIBC:librt +USE_GLIBC:libpthread
|
|
|
|
ifneq ($(PKG_NAME),toolchain)
|
|
PKG_FIXUP_DEPENDS = $(if $(filter kmod-%,$(1)),$(2),$(PKG_DEFAULT_DEPENDS) $(filter-out $(PKG_DEFAULT_DEPENDS),$(2)))
|
|
else
|
|
PKG_FIXUP_DEPENDS = $(2)
|
|
endif
|
|
|
|
define Package/Default
|
|
CONFIGFILE:=
|
|
SECTION:=opt
|
|
CATEGORY:=Extra packages
|
|
DEPENDS:=
|
|
MDEPENDS:=
|
|
CONFLICTS:=
|
|
PROVIDES:=
|
|
EXTRA_DEPENDS:=
|
|
MAINTAINER:=$(PKG_MAINTAINER)
|
|
SOURCE:=$(patsubst $(TOPDIR)/%,%,$(CURDIR))
|
|
ifneq ($(PKG_VERSION),)
|
|
ifneq ($(PKG_RELEASE),)
|
|
VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
|
|
else
|
|
VERSION:=$(PKG_VERSION)
|
|
endif
|
|
else
|
|
VERSION:=$(PKG_RELEASE)
|
|
endif
|
|
ABI_VERSION:=
|
|
ifneq ($(PKG_FLAGS),)
|
|
PKGFLAGS:=$(PKG_FLAGS)
|
|
else
|
|
PKGFLAGS:=
|
|
endif
|
|
ifneq ($(ARCH_PACKAGES),)
|
|
PKGARCH:=$(ARCH_PACKAGES)
|
|
else
|
|
PKGARCH:=$(BOARD)
|
|
endif
|
|
DEFAULT:=
|
|
MENU:=
|
|
SUBMENU:=
|
|
SUBMENUDEP:=
|
|
TITLE:=
|
|
KCONFIG:=
|
|
BUILDONLY:=
|
|
HIDDEN:=
|
|
URL:=
|
|
VARIANT:=
|
|
DEFAULT_VARIANT:=
|
|
USERID:=
|
|
ALTERNATIVES:=
|
|
LICENSE:=$(PKG_LICENSE)
|
|
LICENSE_FILES:=$(PKG_LICENSE_FILES)
|
|
FILE_MODES:=$(PKG_FILE_MODES)
|
|
endef
|
|
|
|
Build/Patch:=$(Build/Patch/Default)
|
|
ifneq ($(strip $(PKG_UNPACK)),)
|
|
define Build/Prepare/Default
|
|
$(PKG_UNPACK)
|
|
[ ! -d ./src/ ] || $(CP) ./src/. $(PKG_BUILD_DIR)
|
|
$(Build/Patch)
|
|
endef
|
|
endif
|
|
|
|
EXTRA_CXXFLAGS = $(EXTRA_CFLAGS)
|
|
ifeq ($(CONFIG_BUILD_NLS),y)
|
|
DISABLE_NLS:=
|
|
else
|
|
DISABLE_NLS:=--disable-nls
|
|
endif
|
|
|
|
CONFIGURE_PREFIX:=/usr
|
|
CONFIGURE_ARGS = \
|
|
--target=$(GNU_TARGET_NAME) \
|
|
--host=$(GNU_TARGET_NAME) \
|
|
--build=$(GNU_HOST_NAME) \
|
|
--program-prefix="" \
|
|
--program-suffix="" \
|
|
--prefix=$(CONFIGURE_PREFIX) \
|
|
--exec-prefix=$(CONFIGURE_PREFIX) \
|
|
--bindir=$(CONFIGURE_PREFIX)/bin \
|
|
--sbindir=$(CONFIGURE_PREFIX)/sbin \
|
|
--libexecdir=$(CONFIGURE_PREFIX)/lib \
|
|
--sysconfdir=/etc \
|
|
--datadir=$(CONFIGURE_PREFIX)/share \
|
|
--localstatedir=/var \
|
|
--mandir=$(CONFIGURE_PREFIX)/man \
|
|
--infodir=$(CONFIGURE_PREFIX)/info \
|
|
$(DISABLE_NLS) \
|
|
$(DISABLE_IPV6)
|
|
|
|
CONFIGURE_VARS = \
|
|
$(TARGET_CONFIGURE_OPTS) \
|
|
CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)" \
|
|
CXXFLAGS="$(TARGET_CXXFLAGS) $(EXTRA_CXXFLAGS)" \
|
|
CPPFLAGS="$(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)" \
|
|
LDFLAGS="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)" \
|
|
|
|
CONFIGURE_PATH = .
|
|
CONFIGURE_CMD = ./configure
|
|
|
|
replace_script=$(FIND) $(1) -name $(2) | $(XARGS) chmod u+w; \
|
|
$(FIND) $(1) -name $(2) | $(XARGS) -n1 cp --remove-destination \
|
|
$(SCRIPT_DIR)/$(2);
|
|
|
|
define Build/Configure/Default
|
|
(cd $(PKG_BUILD_DIR)/$(CONFIGURE_PATH)/$(strip $(3)); \
|
|
if [ -x $(CONFIGURE_CMD) ]; then \
|
|
$(call replace_script,$(PKG_BUILD_DIR)/$(3),config.guess) \
|
|
$(call replace_script,$(PKG_BUILD_DIR)/$(3),config.sub) \
|
|
$(CONFIGURE_VARS) \
|
|
$(2) \
|
|
$(CONFIGURE_CMD) \
|
|
$(CONFIGURE_ARGS) \
|
|
$(1); \
|
|
fi; \
|
|
)
|
|
endef
|
|
|
|
MAKE_VARS = \
|
|
CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)" \
|
|
CXXFLAGS="$(TARGET_CXXFLAGS) $(EXTRA_CXXFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)" \
|
|
LDFLAGS="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)"
|
|
|
|
MAKE_FLAGS = \
|
|
$(TARGET_CONFIGURE_OPTS) \
|
|
CROSS="$(TARGET_CROSS)" \
|
|
ARCH="$(ARCH)"
|
|
|
|
MAKE_INSTALL_FLAGS = \
|
|
$(MAKE_FLAGS) \
|
|
DESTDIR="$(PKG_INSTALL_DIR)"
|
|
|
|
MAKE_PATH ?= .
|
|
|
|
define Build/Compile/Default
|
|
+$(MAKE_VARS) \
|
|
$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/$(MAKE_PATH) \
|
|
$(MAKE_FLAGS) \
|
|
$(1);
|
|
endef
|
|
|
|
define Build/Install/Default
|
|
$(MAKE_VARS) \
|
|
$(MAKE) -C $(PKG_BUILD_DIR)/$(MAKE_PATH) \
|
|
$(MAKE_INSTALL_FLAGS) \
|
|
$(if $(1), $(1), install);
|
|
endef
|
|
|
|
define Build/Dist/Default
|
|
$(call Build/Compile/Default, DESTDIR="$(PKG_BUILD_DIR)/tmp" CC="$(TARGET_CC)" dist)
|
|
endef
|
|
|
|
define Build/DistCheck/Default
|
|
$(call Build/Compile/Default, DESTDIR="$(PKG_BUILD_DIR)/tmp" CC="$(TARGET_CC)" distcheck)
|
|
endef
|