fwupd/contrib/debian/rules
Richard Hughes d5aab65f30 Use Jcat files in firmware archives and for metadata
A Jcat file can be used to store GPG, PKCS-7 and SHA-256 checksums for multiple
files. This allows us to sign a firmware or metadata multiple times (perhaps
by the OEM and also then the LVFS) which further decentralizes the trust model
of the LVFS.

The Jcat format was chosen as the Microsoft catalog format is nonfree and not
documented. We also don't want to modify an existing .cat file created from WU
as this may make it unsuitable to use on Windows.

More information can be found here: https://github.com/hughsie/libjcat
2020-03-23 19:55:12 +00:00

115 lines
4.1 KiB
Makefile
Executable File

#!/usr/bin/make -f
# -*- makefile -*-
export LC_ALL := C.UTF-8
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export DEB_LDFLAGS_MAINT_STRIP=-Wl,-Bsymbolic-functions
#GPGME needs this for proper building on 32 bit archs
ifeq "$(DEB_HOST_ARCH_BITS)" "32"
export DEB_CFLAGS_MAINT_APPEND = -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
endif
ifneq ($(CI),)
export CI=--werror --wrap-mode=default
endif
SB_STYLE := debian
deb_version := $(shell dpkg-parsechangelog --show-field Version)
ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes))
SB_STYLE := ubuntu
tar_name := fwupd_$(deb_version)_$(DEB_HOST_ARCH).tar.gz
export FLASHROM=-Dplugin_flashrom=false
else
TMPLDIR := debian/fwupd-$(DEB_HOST_ARCH)-signed-template/usr/share/code-signing/fwupd-$(DEB_HOST_ARCH)-signed-template
export FLASHROM=-Dplugin_flashrom=true
endif
%:
dh $@ --with gir
override_dh_auto_clean:
rm -fr obj-*
rm -fr debian/build
ifeq (ubuntu,$(SB_STYLE))
rm -rf debian/fwupd-images
endif
override_dh_auto_configure:
if pkg-config --exists libsmbios_c; then \
export DELL="-Dplugin_dell=true"; \
else \
export DELL="-Dplugin_dell=false"; \
fi; \
if pkg-config --exists efivar; then \
export UEFI="-Dplugin_uefi=true -Dplugin_redfish=true -Dplugin_nvme=true"; \
else \
export UEFI="-Dplugin_uefi=false -Dplugin_redfish=false -Dplugin_nvme=false"; \
fi; \
if [ ! -z "$$CI" ]; then \
export CI="-Dlibjcat:introspection=false $$CI"; \
fi; \
dh_auto_configure -- $$UEFI $$DELL $$FLASHROM $$CI -Dplugin_dummy=true -Dgtkdoc=true
override_dh_install:
find debian/tmp/usr -type f -name "*a" -print | xargs rm -f
sed -i 's,wheel,sudo,' ./debian/tmp/usr/share/polkit-1/rules.d/org.freedesktop.fwupd.rules
dh_install
#install the EFI binaries if needed
if [ -d debian/tmp/usr/libexec/fwupd/efi/ ]; then \
dh_install -pfwupd usr/libexec/fwupd/efi ;\
fi
#libjcat built as a subproject for CI
if [ ! -z "$$CI" ]; then \
dh_install -plibfwupd-dev usr/include/libjcat-1; \
dh_install -plibfwupd2 usr/lib/*/libjcat.so.*; \
dh_install -plibfwupd-dev usr/lib/*/libjcat.so; \
dh_install -plibfwupd-dev usr/lib/*/pkgconfig/jcat.pc; \
dh_install -plibfwupd-dev usr/libexec/jcat-tool; \
dh_install -plibfwupd-dev usr/share/gir-1.0/Jcat*; \
dh_install -pfwupd-tests usr/libexec/installed-tests/libjcat; \
fi
dh_missing -a --fail-missing
#this is placed in fwupd-tests
rm -f debian/fwupd/usr/lib/*/fwupd-plugins-3/libfu_plugin_test.so
rm -f debian/fwupd/usr/lib/*/fwupd-plugins-3/libfu_plugin_invalid.so
rm -f debian/fwupd/etc/fwupd/remotes.d/fwupd-tests.conf
ifeq (debian,$(SB_STYLE))
# Generate the template source for the Debian signing service to use
mkdir -p $(TMPLDIR)/source-template/debian
cp -a debian/signing-template/* $(TMPLDIR)/source-template/debian
cp debian/README.Debian $(TMPLDIR)/source-template/debian
find $(TMPLDIR)/source-template/debian -type f | xargs sed -i "s,SIGNARCH,$(DEB_HOST_ARCH),"
find $(TMPLDIR)/source-template/debian -type f | xargs sed -i "s,SIGNVERSION,$(deb_version),"
for file in $$(find $(TMPLDIR)/source-template/debian -type f -name *SIGNARCH*); do file1=$$(echo $$file | sed "s,SIGNARCH,$(DEB_HOST_ARCH),"); mv -v $$file $$file1; done
install -m 0755 debian/fwupd.postinst $(TMPLDIR)/source-template/debian/fwupd-$(DEB_HOST_ARCH)-signed.postinst
install -m 0755 debian/fwupd.postrm $(TMPLDIR)/source-template/debian/fwupd-$(DEB_HOST_ARCH)-signed.postrm
./debian/gen_signing_changelog $(TMPLDIR)/source-template/debian fwupd $(DEB_HOST_ARCH)
./debian/gen_signing_json $(TMPLDIR) fwupd ${DEB_HOST_ARCH}
endif
override_dh_strip_nondeterminism:
dh_strip_nondeterminism -Xfirmware-example.xml.gz
override_dh_auto_test:
if [ -x /usr/bin/valgrind ] ; then \
dh_auto_test; \
fi
override_dh_builddeb:
dh_builddeb
ifeq (ubuntu,$(SB_STYLE))
if [ -d debian/tmp/usr/libexec/fwupd/efi/ ]; then \
mkdir -p debian/fwupd-images/$(deb_version) ;\
cp debian/tmp/usr/libexec/fwupd/efi/fwupd*.efi debian/fwupd-images/$(deb_version) ;\
echo $(deb_version) > debian/fwupd-images/$(deb_version)/version ;\
tar -C debian/fwupd-images -czvf ../$(tar_name) . ;\
dpkg-distaddfile $(tar_name) raw-uefi - ;\
fi
endif
override_dh_shlibdeps:
dh_shlibdeps $$DHSLIBS