Files
buildroot/package/ca-certificates/ca-certificates.mk
Quentin Schulz 28f9f29b5e package/ca-certificates: enable host package variant
The host ca-certificates is needed to download the SPDX schema on
CycloneDX's GitHub when using Buildroot's host Python, see
urllib.request.urlretrieve(SPDX_SCHEMA_URL, SPDX_SCHEMA_PATH) in
utils/generate-cyclonedx.

Note that unlike the target package which uses a _TARGET_FINALIZE_HOOKS
since commit 2bc8e72baf ("package/ca-certificates: create the bundle
as target-finalize hook"), the host package doesn't have this option as
there's no such hook for host packages. Therefore, the target's
CA_CERTIFICATES_INSTALL_TARGET_CMDS and CA_CERTIFICATES_GEN_BUNDLE are
merged and adapted into HOST_CA_CERTIFICATES_INSTALL_CMDS.
This of course has the same shortcomings as the target package had
before commit 2bc8e72baf ("package/ca-certificates: create the bundle
as target-finalize hook").
The adaptations were:
- replaced $(TARGET_MAKE_ENV) with $(HOST_MAKE_ENV)
- replaced $(TARGET_DIR) to $(HOST_DIR)
- replaced $(HOST_DIR)/usr with $(HOST_DIR)
- replaced find usr/share/ca-certificates with find share/ca-certificates
  (since it's done from within $(HOST_DIR)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Arnout Vandecappelle <arnout@rnout.be>
2026-05-30 17:34:04 +02:00

77 lines
2.8 KiB
Makefile

################################################################################
#
# ca-certificates
#
################################################################################
CA_CERTIFICATES_VERSION = 20260223
CA_CERTIFICATES_SOURCE = ca-certificates_$(CA_CERTIFICATES_VERSION).tar.xz
CA_CERTIFICATES_SITE = https://snapshot.debian.org/archive/debian/20260223T202245Z/pool/main/c/ca-certificates
CA_CERTIFICATES_DEPENDENCIES = host-openssl host-python3
HOST_CA_CERTIFICATES_DEPENDENCIES = host-openssl host-python3
CA_CERTIFICATES_LICENSE = GPL-2.0+ (script), MPL-2.0 (data)
CA_CERTIFICATES_LICENSE_FILES = debian/copyright
define CA_CERTIFICATES_BUILD_CMDS
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) clean all
endef
define CA_CERTIFICATES_INSTALL_TARGET_CMDS
$(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/share/ca-certificates
$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/ssl/certs
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install DESTDIR=$(TARGET_DIR)
rm -f $(TARGET_DIR)/usr/sbin/update-ca-certificates
endef
define CA_CERTIFICATES_GEN_BUNDLE
# Remove any existing certificates under /etc/ssl/certs
rm -f $(TARGET_DIR)/etc/ssl/certs/*
# Create symlinks to certificates under /etc/ssl/certs
# and generate the bundle
cd $(TARGET_DIR) ;\
for i in `find usr/share/ca-certificates -name "*.crt" | LC_COLLATE=C sort` ; do \
ln -sf ../../../$$i etc/ssl/certs/`basename $${i} .crt`.pem ;\
cat $$i ;\
done >$(BUILD_DIR)/ca-certificates.crt
# Create symlinks to the certificates by their hash values
$(HOST_DIR)/bin/c_rehash $(TARGET_DIR)/etc/ssl/certs
# Install the certificates bundle
$(INSTALL) -D -m 644 $(BUILD_DIR)/ca-certificates.crt \
$(TARGET_DIR)/etc/ssl/certs/ca-certificates.crt
endef
CA_CERTIFICATES_TARGET_FINALIZE_HOOKS += CA_CERTIFICATES_GEN_BUNDLE
define HOST_CA_CERTIFICATES_BUILD_CMDS
$(HOST_MAKE_ENV) $(MAKE) -C $(@D) clean all
endef
define HOST_CA_CERTIFICATES_INSTALL_CMDS
$(INSTALL) -d -m 0755 $(HOST_DIR)/share/ca-certificates
$(INSTALL) -d -m 0755 $(HOST_DIR)/etc/ssl/certs
$(HOST_MAKE_ENV) $(MAKE) -C $(@D) install DESTDIR=$(HOST_DIR)
rm -f $(HOST_DIR)/sbin/update-ca-certificates
# Remove any existing certificates under /etc/ssl/certs
rm -f $(HOST_DIR)/etc/ssl/certs/*
# Create symlinks to certificates under /etc/ssl/certs
# and generate the bundle
cd $(HOST_DIR) ;\
for i in `find share/ca-certificates -name "*.crt" | LC_COLLATE=C sort` ; do \
ln -sf ../../../$$i etc/ssl/certs/`basename $${i} .crt`.pem ;\
cat $$i ;\
done >$(BUILD_DIR)/ca-certificates.crt
# Create symlinks to the certificates by their hash values
$(HOST_DIR)/bin/c_rehash $(HOST_DIR)/etc/ssl/certs
# Install the certificates bundle
$(INSTALL) -D -m 644 $(BUILD_DIR)/ca-certificates.crt \
$(HOST_DIR)/etc/ssl/certs/ca-certificates.crt
endef
$(eval $(generic-package))
$(eval $(host-generic-package))