2018-03-06 21:50:05 +01:00
|
|
|
#
|
2015-02-07 21:01:48 +00:00
|
|
|
# Copyright (C) 2006-2015 OpenWrt.org
|
2007-01-10 21:52:28 +00:00
|
|
|
#
|
|
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
|
|
# See /LICENSE for more information.
|
|
|
|
#
|
|
|
|
|
|
|
|
include $(TOPDIR)/rules.mk
|
|
|
|
include $(INCLUDE_DIR)/kernel.mk
|
2012-04-12 23:08:13 +00:00
|
|
|
include $(INCLUDE_DIR)/version.mk
|
2015-05-27 11:22:20 +00:00
|
|
|
include $(INCLUDE_DIR)/feeds.mk
|
2007-01-10 21:52:28 +00:00
|
|
|
|
2008-08-17 11:14:13 +00:00
|
|
|
override MAKEFLAGS=
|
|
|
|
|
2024-04-08 08:05:29 +02:00
|
|
|
IB_NAME:=$(VERSION_DIST_SANITIZED)-imagebuilder-$(if $(CONFIG_VERSION_FILENAMES),$(VERSION_NUMBER)-)$(BOARD)-$(SUBTARGET).$(HOST_OS)-$(HOST_ARCH)
|
2007-11-14 23:11:07 +00:00
|
|
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(IB_NAME)
|
|
|
|
IB_KDIR:=$(patsubst $(TOPDIR)/%,$(PKG_BUILD_DIR)/%,$(KERNEL_BUILD_DIR))
|
2010-10-26 13:34:21 +00:00
|
|
|
IB_LDIR:=$(patsubst $(TOPDIR)/%,$(PKG_BUILD_DIR)/%,$(LINUX_DIR))
|
2017-05-14 20:45:06 +02:00
|
|
|
IB_DTSDIR:=$(patsubst $(TOPDIR)/%,$(PKG_BUILD_DIR)/%,$(LINUX_DIR))/arch/$(LINUX_KARCH)/boot/dts/
|
2017-01-27 13:41:04 +01:00
|
|
|
IB_IDIR:=$(patsubst $(TOPDIR)/%,$(PKG_BUILD_DIR)/%,$(STAGING_DIR_IMAGE))
|
2007-01-10 21:52:28 +00:00
|
|
|
|
2020-12-29 01:03:20 +01:00
|
|
|
BUNDLER_PATH := $(subst $(space),:,$(filter-out $(TOPDIR)/%,$(subst :,$(space),$(PATH))))
|
|
|
|
BUNDLER_COMMAND := PATH=$(BUNDLER_PATH) $(XARGS) $(SCRIPT_DIR)/bundle-libraries.sh $(PKG_BUILD_DIR)/staging_dir/host
|
|
|
|
|
2024-05-14 12:36:59 +02:00
|
|
|
PACKAGE_SUFFIX:=$(if $(CONFIG_USE_APK),apk,ipk)
|
2024-11-10 04:26:43 +01:00
|
|
|
PACKAGE_VERSION_SEPARATOR:=$(if $(CONFIG_USE_APK),-,_)
|
2024-05-14 12:36:59 +02:00
|
|
|
|
2007-01-10 21:52:28 +00:00
|
|
|
all: compile
|
|
|
|
|
2024-02-13 01:03:44 +01:00
|
|
|
$(BIN_DIR)/$(IB_NAME).tar.zst: clean
|
2007-11-14 23:11:07 +00:00
|
|
|
rm -rf $(PKG_BUILD_DIR)
|
2014-07-24 15:46:12 +00:00
|
|
|
mkdir -p $(IB_KDIR) $(IB_LDIR) $(PKG_BUILD_DIR)/staging_dir/host/lib \
|
2024-01-11 11:33:21 +01:00
|
|
|
$(PKG_BUILD_DIR)/target/linux $(PKG_BUILD_DIR)/scripts $(IB_DTSDIR)
|
2010-04-27 22:16:40 +00:00
|
|
|
-cp $(TOPDIR)/.config $(PKG_BUILD_DIR)/.config
|
2021-05-07 21:35:20 +02:00
|
|
|
$(SED) 's/^CONFIG_BINARY_FOLDER=.*/# CONFIG_BINARY_FOLDER is not set/' $(PKG_BUILD_DIR)/.config
|
|
|
|
$(SED) 's/^CONFIG_DOWNLOAD_FOLDER=.*/# CONFIG_DOWNLOAD_FOLDER is not set/' $(PKG_BUILD_DIR)/.config
|
2016-09-29 04:14:17 -04:00
|
|
|
$(CP) -L \
|
2008-08-22 13:45:54 +00:00
|
|
|
$(INCLUDE_DIR) $(SCRIPT_DIR) \
|
2010-04-27 22:16:40 +00:00
|
|
|
$(TOPDIR)/rules.mk \
|
2007-01-10 21:52:28 +00:00
|
|
|
./files/Makefile \
|
2007-11-14 23:11:07 +00:00
|
|
|
$(TMP_DIR)/.targetinfo \
|
|
|
|
$(TMP_DIR)/.packageinfo \
|
|
|
|
$(PKG_BUILD_DIR)/
|
2015-05-27 11:22:20 +00:00
|
|
|
|
2024-05-14 12:36:59 +02:00
|
|
|
$(INSTALL_DIR) $(PKG_BUILD_DIR)/packages
|
|
|
|
|
|
|
|
ifneq ($(CONFIG_USE_APK),)
|
2024-05-31 13:08:02 +02:00
|
|
|
ifeq ($(CONFIG_IB_STANDALONE),)
|
2024-05-14 12:36:59 +02:00
|
|
|
$(call FeedSourcesAppendAPK,$(PKG_BUILD_DIR)/repositories)
|
|
|
|
$(VERSION_SED_SCRIPT) $(PKG_BUILD_DIR)/repositories
|
2024-05-31 13:08:02 +02:00
|
|
|
endif
|
2024-10-28 23:20:57 +01:00
|
|
|
echo "packages/packages.adb" >> $(PKG_BUILD_DIR)/repositories
|
2024-05-31 13:08:02 +02:00
|
|
|
|
|
|
|
$(INSTALL_DATA) ./files/README.apk.md $(PKG_BUILD_DIR)/packages/README.md
|
2024-05-14 12:36:59 +02:00
|
|
|
else
|
2024-05-31 13:08:02 +02:00
|
|
|
ifeq ($(CONFIG_IB_STANDALONE),)
|
2015-05-27 11:22:20 +00:00
|
|
|
echo '## Remote package repositories' >> $(PKG_BUILD_DIR)/repositories.conf
|
2024-05-14 12:36:59 +02:00
|
|
|
$(call FeedSourcesAppendOPKG,$(PKG_BUILD_DIR)/repositories.conf)
|
2020-09-15 12:44:36 -10:00
|
|
|
$(VERSION_SED_SCRIPT) $(PKG_BUILD_DIR)/repositories.conf
|
2015-05-27 11:22:20 +00:00
|
|
|
|
2024-05-31 13:08:02 +02:00
|
|
|
endif
|
|
|
|
|
2021-10-12 15:36:33 -10:00
|
|
|
# create an empty package index so `opkg` doesn't report an error
|
|
|
|
touch $(PKG_BUILD_DIR)/packages/Packages
|
2024-05-31 13:08:02 +02:00
|
|
|
$(INSTALL_DATA) ./files/README.opkg.md $(PKG_BUILD_DIR)/packages/README.md
|
2021-10-12 15:36:33 -10:00
|
|
|
|
2015-05-28 09:47:37 +00:00
|
|
|
echo '' >> $(PKG_BUILD_DIR)/repositories.conf
|
2015-05-27 11:22:20 +00:00
|
|
|
echo '## This is the local package repository, do not remove!' >> $(PKG_BUILD_DIR)/repositories.conf
|
|
|
|
echo 'src imagebuilder file:packages' >> $(PKG_BUILD_DIR)/repositories.conf
|
2024-05-14 12:36:59 +02:00
|
|
|
endif
|
2015-05-27 11:22:20 +00:00
|
|
|
|
2024-11-06 16:34:32 +01:00
|
|
|
ifeq ($(CONFIG_IB_STANDALONE),)
|
2020-09-15 12:44:36 -10:00
|
|
|
$(FIND) $(call FeedPackageDir,libc) -type f \
|
2024-11-01 12:33:49 +01:00
|
|
|
\( \
|
2024-11-10 04:26:43 +01:00
|
|
|
-name 'base-files$(PACKAGE_VERSION_SEPARATOR)*.$(PACKAGE_SUFFIX)' -or \
|
|
|
|
-name 'libc$(PACKAGE_VERSION_SEPARATOR)*.$(PACKAGE_SUFFIX)' -or \
|
|
|
|
-name 'kernel$(PACKAGE_VERSION_SEPARATOR)*.$(PACKAGE_SUFFIX)' \) \
|
2024-11-01 12:33:49 +01:00
|
|
|
-exec $(CP) -t $(PKG_BUILD_DIR)/packages {} +
|
2024-11-06 16:34:32 +01:00
|
|
|
else
|
2024-05-14 12:36:59 +02:00
|
|
|
$(FIND) $(wildcard $(PACKAGE_SUBDIRS)) -type f -name '*.$(PACKAGE_SUFFIX)' \
|
2020-09-15 12:44:36 -10:00
|
|
|
-exec $(CP) -t $(PKG_BUILD_DIR)/packages/ {} +
|
2015-05-27 11:22:20 +00:00
|
|
|
endif
|
|
|
|
|
2020-11-02 12:15:05 -10:00
|
|
|
ifneq ($(CONFIG_SIGNATURE_CHECK),)
|
2024-10-24 20:29:52 +02:00
|
|
|
ifneq ($(CONFIG_USE_APK),y)
|
2020-11-02 12:15:05 -10:00
|
|
|
echo '' >> $(PKG_BUILD_DIR)/repositories.conf
|
|
|
|
echo 'option check_signature' >> $(PKG_BUILD_DIR)/repositories.conf
|
|
|
|
$(INSTALL_DIR) $(PKG_BUILD_DIR)/keys
|
|
|
|
$(CP) -L $(STAGING_DIR_ROOT)/etc/opkg/keys/ $(PKG_BUILD_DIR)/
|
|
|
|
$(CP) -L $(STAGING_DIR_ROOT)/usr/sbin/opkg-key $(PKG_BUILD_DIR)/scripts/
|
2024-10-24 20:29:52 +02:00
|
|
|
else
|
|
|
|
$(INSTALL_DIR) $(PKG_BUILD_DIR)/keys
|
|
|
|
$(CP) -L $(STAGING_DIR_ROOT)/etc/apk/keys/ $(PKG_BUILD_DIR)/
|
2024-05-14 12:36:59 +02:00
|
|
|
endif
|
2020-11-02 12:15:05 -10:00
|
|
|
endif
|
|
|
|
|
2024-01-11 11:33:21 +01:00
|
|
|
$(CP) -L $(TOPDIR)/target/linux/Makefile $(PKG_BUILD_DIR)/target/linux
|
|
|
|
$(CP) -L $(TOPDIR)/target/linux/generic $(PKG_BUILD_DIR)/target/linux
|
2024-01-25 10:25:06 +01:00
|
|
|
# check if board is installed from a feeds subdirectory
|
|
|
|
if [ -d $(TOPDIR)/target/linux/feeds/$(BOARD) ]; then \
|
|
|
|
mkdir -p $(PKG_BUILD_DIR)/target/linux/feeds; \
|
|
|
|
$(CP) -L $(TOPDIR)/target/linux/feeds/$(BOARD) $(PKG_BUILD_DIR)/target/linux/feeds; \
|
|
|
|
else \
|
|
|
|
$(CP) -L $(TOPDIR)/target/linux/$(BOARD) $(PKG_BUILD_DIR)/target/linux; \
|
|
|
|
fi
|
2014-07-10 22:02:31 +00:00
|
|
|
if [ -d $(TOPDIR)/staging_dir/host/lib/grub ]; then \
|
2014-07-24 15:46:12 +00:00
|
|
|
$(CP) $(TOPDIR)/staging_dir/host/lib/grub/ $(PKG_BUILD_DIR)/staging_dir/host/lib; \
|
2014-07-10 22:02:31 +00:00
|
|
|
fi
|
2007-11-14 23:11:07 +00:00
|
|
|
rm -rf \
|
2010-03-30 11:41:51 +00:00
|
|
|
$(PKG_BUILD_DIR)/target/linux/*/files{,-*} \
|
2018-03-06 21:50:05 +01:00
|
|
|
$(PKG_BUILD_DIR)/target/linux/*/patches{,-*} \
|
|
|
|
$(PKG_BUILD_DIR)/target/linux/generic/{pending,backport,hack}{,-*}
|
2007-11-14 23:11:07 +00:00
|
|
|
-cp $(KERNEL_BUILD_DIR)/* $(IB_KDIR)/ # don't copy subdirectories here
|
2010-10-26 13:34:21 +00:00
|
|
|
-cp $(LINUX_DIR)/.config $(IB_LDIR)/
|
2017-01-13 19:21:31 +01:00
|
|
|
rm -f $(IB_KDIR)/root.*
|
2017-01-13 19:22:09 +01:00
|
|
|
rm -f $(IB_KDIR)/vmlinux.debug
|
2024-07-16 19:00:29 +02:00
|
|
|
# remove any file for initramfs and Per Device Rootfs initramfs files
|
|
|
|
rm -f $(IB_KDIR)/vmlinux-initramfs*
|
2024-10-22 13:53:51 +02:00
|
|
|
rm -f $(IB_KDIR)/vmlinuz-initramfs*
|
2024-07-16 19:00:29 +02:00
|
|
|
rm -f $(IB_KDIR)/Image-initramfs*
|
2017-01-10 11:37:47 +01:00
|
|
|
if [ -x $(LINUX_DIR)/scripts/dtc/dtc ]; then \
|
|
|
|
$(INSTALL_DIR) $(IB_LDIR)/scripts/dtc; \
|
|
|
|
$(INSTALL_BIN) $(LINUX_DIR)/scripts/dtc/dtc $(IB_LDIR)/scripts/dtc/dtc; \
|
|
|
|
fi
|
2017-05-14 20:45:06 +02:00
|
|
|
if [ -d $(LINUX_DIR)/arch/$(LINUX_KARCH)/boot/dts ]; then \
|
|
|
|
$(CP) -L $(LINUX_DIR)/arch/$(LINUX_KARCH)/boot/dts/* $(IB_DTSDIR); \
|
2014-07-21 18:42:00 +00:00
|
|
|
fi
|
2012-04-17 09:31:16 +00:00
|
|
|
$(SED) 's,^# REVISION:=.*,REVISION:=$(REVISION),g' $(PKG_BUILD_DIR)/include/version.mk
|
2020-11-13 11:21:29 -08:00
|
|
|
$(SED) 's,^# SOURCE_DATE_EPOCH:=.*,SOURCE_DATE_EPOCH:=$(SOURCE_DATE_EPOCH),g' $(PKG_BUILD_DIR)/include/version.mk
|
build: lock versions for special APK packages
The three packages base-files, libc and kernel are special, the former
can't be upgraded in place since it's content are modified on startup,
the latter two are virtual packages only used as constraints for the
package manager.
Historically base-files was "locked" via a special OPKG function, the
latter two were hidden from the package index and thereby never picked
as possible upgrade.
Time moved forward and we now have APK and tools like OWUT. The latter
compares available packages with installed packages and generates user
readable output, requiring versions for libc and kernel, too. At the
same time, APK uses a different looking mechanism, which is set during
installation instead of part of the package metadata.
In short, this patch adds version constraints to the three packages,
allowing them to be part of the package index.
Fixes: #17774
Fixes: #17775
Fixes: efahl/owut#31
Signed-off-by: Paul Spooren <mail@aparcar.org>
2025-02-01 23:01:58 +00:00
|
|
|
$(SED) 's,^# BASE_FILES_VERSION:=.*,BASE_FILES_VERSION:=$(shell cat $(TMP_DIR)/base-files.version),g' $(PKG_BUILD_DIR)/include/version.mk
|
|
|
|
$(SED) 's,^# LIBC_VERSION:=.*,LIBC_VERSION:=$(shell cat $(TMP_DIR)/libc.version),g' $(PKG_BUILD_DIR)/include/version.mk
|
|
|
|
$(SED) 's,^# KERNEL_VERSION:=.*,KERNEL_VERSION:=$(shell cat $(TMP_DIR)/kernel.version),g' $(PKG_BUILD_DIR)/include/version.mk
|
2020-11-13 11:21:29 -08:00
|
|
|
$(SED) '/LINUX_VERMAGIC:=/ { s,unknown,$(LINUX_VERMAGIC),g }' $(PKG_BUILD_DIR)/include/kernel.mk
|
2010-03-30 11:41:51 +00:00
|
|
|
find $(PKG_BUILD_DIR) -name CVS -o -name .git -o -name .svn \
|
|
|
|
| $(XARGS) rm -rf
|
2017-01-27 13:41:04 +01:00
|
|
|
$(INSTALL_DIR) $(IB_IDIR)
|
|
|
|
-$(CP) $(STAGING_DIR_IMAGE)/* $(IB_IDIR)/
|
2017-01-10 11:37:47 +01:00
|
|
|
$(INSTALL_DIR) $(PKG_BUILD_DIR)/staging_dir/host/bin
|
|
|
|
$(CP) $(STAGING_DIR_HOST)/bin/* $(PKG_BUILD_DIR)/staging_dir/host/bin/
|
|
|
|
(cd $(PKG_BUILD_DIR); find staging_dir/host/bin/ $(IB_LDIR)/scripts/dtc/ -type f | \
|
2020-12-29 01:03:20 +01:00
|
|
|
$(BUNDLER_COMMAND))
|
2020-09-27 11:50:40 -10:00
|
|
|
$(CP) $(TOPDIR)/staging_dir/host/lib/libfakeroot* $(PKG_BUILD_DIR)/staging_dir/host/lib
|
2020-11-02 11:35:39 -10:00
|
|
|
STRIP=$(STAGING_DIR_HOST)/bin/sstrip $(SCRIPT_DIR)/rstrip.sh $(PKG_BUILD_DIR)/staging_dir/host/bin/
|
2024-02-13 01:03:44 +01:00
|
|
|
|
2020-08-13 13:46:43 -10:00
|
|
|
(cd $(BUILD_DIR); \
|
2024-02-13 01:03:44 +01:00
|
|
|
tar -I '$(STAGING_DIR_HOST)/bin/zstd -T0 --ultra -20' -cf $@ $(IB_NAME) \
|
2020-08-13 13:46:43 -10:00
|
|
|
--mtime="$(shell date --date=@$(SOURCE_DATE_EPOCH))"; \
|
|
|
|
)
|
2007-01-10 21:52:28 +00:00
|
|
|
|
|
|
|
download:
|
|
|
|
prepare:
|
2024-02-13 01:03:44 +01:00
|
|
|
compile: $(BIN_DIR)/$(IB_NAME).tar.zst
|
2007-01-10 21:52:28 +00:00
|
|
|
install: compile
|
|
|
|
|
2007-01-14 23:37:40 +00:00
|
|
|
clean: FORCE
|
2024-02-13 01:03:44 +01:00
|
|
|
rm -rf $(PKG_BUILD_DIR) $(BIN_DIR)/$(IB_NAME).tar.zst
|