Commit b891ea7c authored by jan.koester's avatar jan.koester
Browse files

test

parent 84a121a3
Loading
Loading
Loading
Loading
+0 −20
Original line number Diff line number Diff line
@@ -17,31 +17,11 @@ Build-Depends: debhelper-compat (= 13), cmake (>= 3.18),
 libtinyxml2-dev,
 libsmtpclient-dev,
 libhtmlpp-dev,
 libgameinfoplus-dev <!editor>,
 pkg-config
Standards-Version: 4.6.2
Rules-Requires-Root: no

Package: blogi
Build-Profiles: <!editor>
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, openssl, adduser, systemd-container
Description: Blog engine server with plugin architecture
 blogi is a blog engine server providing a plugin-based architecture
 for content management, static pages, media integration, contact
 forms, templates, and more. Includes authentication via authdb
 and a web-based interface.

Package: blogi-dev
Build-Profiles: <!editor>
Architecture: any
Depends: blogi (= ${binary:Version}), ${misc:Depends}
Description: Development files for the blogi blog engine
 Headers and static library for developing blogi server plugins
 and extensions. Contains libblogidev.a and the public C++ headers.

Package: blogi-editor
Build-Profiles: <editor>
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, adduser, systemd-container
Description: Web-based editor for the blogi blog engine
+10 −102
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ ifneq ($(IS_NSPAWN),)
		-DBUILD_EDITOR=ON
else
	dh_auto_configure -- \
		-DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE) \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DCMAKE_INSTALL_LIBDIR=lib/$(DEB_HOST_MULTIARCH) \
		-DCMAKE_BUILD_TYPE=Release \
@@ -26,13 +25,7 @@ else
endif

override_dh_shlibdeps:
ifneq ($(IS_EDITOR),)
	@echo "Skipping dh_shlibdeps for editor (self-contained nspawn container)"
else ifneq ($(IS_NSPAWN),)
	dh_shlibdeps -- --ignore-missing-info
else
	dh_shlibdeps
endif
	@echo "Skipping dh_shlibdeps (self-contained nspawn container)"

override_dh_dwz:
ifneq ($(IS_NSPAWN),)
@@ -44,7 +37,7 @@ endif
override_dh_install:
	dh_install
ifneq ($(IS_NSPAWN),)
	@echo "Editor nspawn build — assembling chroot at /opt/blogi-editor"
	@echo "Nspawn build — assembling chroot at /opt/blogi-editor (musl)"
	# musl dynamic linker
	mkdir -p debian/blogi-editor/opt/blogi-editor/lib
	cp -a /usr/local/musl/lib/ld-musl-x86_64.so.1 debian/blogi-editor/opt/blogi-editor/lib/
@@ -61,46 +54,14 @@ ifneq ($(IS_NSPAWN),)
	# dbpp database backend plugins
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/local/lib/dbpp
	cp -a /usr/local/lib/dbpp/*.so debian/blogi-editor/opt/blogi-editor/usr/local/lib/dbpp/
	# editor binary
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/bin
	cp -a debian/blogi-editor/usr/bin/blogi-editor debian/blogi-editor/opt/blogi-editor/usr/bin/
	# editor widget plugins
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/lib/blogi/plugins/webedit
	-cp -a debian/blogi-editor/usr/lib/blogi/plugins/webedit/*.so debian/blogi-editor/opt/blogi-editor/usr/lib/blogi/plugins/webedit/
	# blogidev library (plugin runtime dependency)
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/lib/blogi
	-cp -a debian/blogi-editor/usr/lib/blogi/libblogidev.* debian/blogi-editor/opt/blogi-editor/usr/lib/blogi/
	# Static content (HTML, CSS, JS)
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/share/blogi-editor
	-cp -a debian/blogi-editor/usr/share/blogi-editor/* debian/blogi-editor/opt/blogi-editor/usr/share/blogi-editor/
	# Minimal container filesystem
	mkdir -p debian/blogi-editor/opt/blogi-editor/etc/blogi-editor/ssl
	mkdir -p debian/blogi-editor/opt/blogi-editor/var/lib/blogi-editor
	mkdir -p debian/blogi-editor/opt/blogi-editor/proc
	mkdir -p debian/blogi-editor/opt/blogi-editor/sys
	mkdir -p debian/blogi-editor/opt/blogi-editor/dev
	mkdir -p debian/blogi-editor/opt/blogi-editor/run
	mkdir -p debian/blogi-editor/opt/blogi-editor/tmp
	# Container user database
	echo "root:x:0:0:root:/root:/bin/false" > debian/blogi-editor/opt/blogi-editor/etc/passwd
	echo "blogi-editor:x:998:998:blogi-editor:/var/lib/blogi-editor:/bin/false" >> debian/blogi-editor/opt/blogi-editor/etc/passwd
	echo "root:x:0:" > debian/blogi-editor/opt/blogi-editor/etc/group
	echo "blogi-editor:x:998:" >> debian/blogi-editor/opt/blogi-editor/etc/group
	# nspawn and systemd config
	install -D -m 644 debian/blogi-editor.nspawn debian/blogi-editor/etc/systemd/nspawn/blogi-editor.nspawn
	install -D -m 644 debian/blogi-editor.default-config.yaml debian/blogi-editor/usr/share/blogi-editor/blogi-editor.default-config.yaml
	install -D -m 644 debian/blogi-editor.tmpfiles debian/blogi-editor/usr/lib/tmpfiles.d/blogi-editor.conf
	install -D -m 644 debian/blogi-editor.sysusers debian/blogi-editor/usr/lib/sysusers.d/blogi-editor.conf
else
	@echo "Editor build — assembling chroot at /opt/blogi-editor (system libs)"
	# editor binary
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/bin
	cp -a debian/blogi-editor/usr/bin/blogi-editor debian/blogi-editor/opt/blogi-editor/usr/bin/
	@echo "System build — assembling chroot at /opt/blogi-editor (glibc)"
	# glibc dynamic linker
	mkdir -p debian/blogi-editor/opt/blogi-editor/lib64
	cp -a /lib64/ld-linux-x86-64.so.2 debian/blogi-editor/opt/blogi-editor/lib64/ || true
	# Copy all shared library dependencies into chroot
	mkdir -p debian/blogi-editor/opt/blogi-editor/lib/x86_64-linux-gnu
	mkdir -p debian/blogi-editor/opt/blogi-editor/lib64
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/lib/x86_64-linux-gnu
	cp -a /lib64/ld-linux-x86-64.so.2 debian/blogi-editor/opt/blogi-editor/lib64/ || true
	for lib in $$(ldd debian/blogi-editor/usr/bin/blogi-editor | grep -o '/[^ ]*'); do \
		dir=$$(dirname "$$lib"); \
		mkdir -p "debian/blogi-editor/opt/blogi-editor$$dir"; \
@@ -120,6 +81,10 @@ else
			cp -anL "$$dep" "debian/blogi-editor/opt/blogi-editor$$dir/" 2>/dev/null || true; \
		done; \
	done
endif
	# editor binary
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/bin
	cp -a debian/blogi-editor/usr/bin/blogi-editor debian/blogi-editor/opt/blogi-editor/usr/bin/
	# editor widget plugins
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/lib/blogi/plugins/webedit
	-cp -a debian/blogi-editor/usr/lib/blogi/plugins/webedit/*.so debian/blogi-editor/opt/blogi-editor/usr/lib/blogi/plugins/webedit/
@@ -147,66 +112,9 @@ else
	install -D -m 644 debian/blogi-editor.default-config.yaml debian/blogi-editor/usr/share/blogi-editor/blogi-editor.default-config.yaml
	install -D -m 644 debian/blogi-editor.tmpfiles debian/blogi-editor/usr/lib/tmpfiles.d/blogi-editor.conf
	install -D -m 644 debian/blogi-editor.sysusers debian/blogi-editor/usr/lib/sysusers.d/blogi-editor.conf
endif
else ifneq ($(IS_NSPAWN),)
	@echo "Nspawn build — assembling complete chroot at /opt/blogi"
	# musl dynamic linker (binary interpreter: /lib/ld-musl-x86_64.so.1)
	mkdir -p debian/blogi/opt/blogi/lib
	cp -a /usr/local/musl/lib/ld-musl-x86_64.so.1 debian/blogi/opt/blogi/lib/
	# musl libc (RUNPATH: /usr/local/musl/lib)
	mkdir -p debian/blogi/opt/blogi/usr/local/musl/lib
	cp -a /usr/local/musl/lib/libc.so debian/blogi/opt/blogi/usr/local/musl/lib/
	chmod +x debian/blogi/opt/blogi/usr/local/musl/lib/libc.so
	# All musl-built shared libraries (RUNPATH: /usr/local/lib)
	mkdir -p debian/blogi/opt/blogi/usr/local/lib
	cp -a /usr/local/lib/*.so* debian/blogi/opt/blogi/usr/local/lib/
	# confplus config backend plugins (yaml.cfg.so etc.)
	mkdir -p debian/blogi/opt/blogi/usr/local/lib/confplus/backend
	cp -a /usr/local/lib/confplus/backend/*.cfg.so debian/blogi/opt/blogi/usr/local/lib/confplus/backend/
	# dbpp database backend plugins (pgsql.so, sqlite.so)
	mkdir -p debian/blogi/opt/blogi/usr/local/lib/dbpp
	cp -a /usr/local/lib/dbpp/*.so debian/blogi/opt/blogi/usr/local/lib/dbpp/
	# blogi binary
	mkdir -p debian/blogi/opt/blogi/usr/bin
	cp -a debian/blogi/usr/bin/blogi debian/blogi/opt/blogi/usr/bin/
	# blogi plugins
	mkdir -p debian/blogi/opt/blogi/usr/lib/blogi/plugins
	-cp -a debian/blogi/usr/lib/blogi/plugins/*.so debian/blogi/opt/blogi/usr/lib/blogi/plugins/
	# blogidev library (plugin runtime dependency)
	-cp -a debian/blogi/usr/lib/blogi/libblogidev.* debian/blogi/opt/blogi/usr/lib/blogi/
	# Static content (themes, JS, CSS)
	mkdir -p debian/blogi/opt/blogi/usr/share/blogi
	-cp -a debian/blogi/usr/share/blogi/* debian/blogi/opt/blogi/usr/share/blogi/
	# Minimal container filesystem
	mkdir -p debian/blogi/opt/blogi/etc/blogi/ssl
	mkdir -p debian/blogi/opt/blogi/var/lib/blogi
	mkdir -p debian/blogi/opt/blogi/proc
	mkdir -p debian/blogi/opt/blogi/sys
	mkdir -p debian/blogi/opt/blogi/dev
	mkdir -p debian/blogi/opt/blogi/run
	mkdir -p debian/blogi/opt/blogi/tmp
	# Container user database
	echo "root:x:0:0:root:/root:/bin/false" > debian/blogi/opt/blogi/etc/passwd
	echo "blogi:x:999:999:blogi:/var/lib/blogi:/bin/false" >> debian/blogi/opt/blogi/etc/passwd
	echo "root:x:0:" > debian/blogi/opt/blogi/etc/group
	echo "blogi:x:999:" >> debian/blogi/opt/blogi/etc/group
	# nspawn and systemd config
	install -D -m 644 debian/blogi.nspawn debian/blogi/etc/systemd/nspawn/blogi.nspawn
	install -D -m 644 debian/blogi.default-config.yaml debian/blogi/usr/share/blogi/blogi.default-config.yaml
	install -D -m 644 debian/blogi.tmpfiles debian/blogi/usr/lib/tmpfiles.d/blogi.conf
	install -D -m 644 debian/blogi.sysusers debian/blogi/usr/lib/sysusers.d/blogi.conf
else
	install -D -m 644 debian/blogi.default-config.yaml debian/blogi/usr/share/blogi/blogi.default-config.yaml
	install -D -m 644 debian/blogi.tmpfiles debian/blogi/usr/lib/tmpfiles.d/blogi.conf
	install -D -m 644 debian/blogi.sysusers debian/blogi/usr/lib/sysusers.d/blogi.conf
endif

override_dh_fixperms:
	dh_fixperms
ifneq ($(IS_NSPAWN),)
	chmod +x debian/blogi-editor/opt/blogi-editor/usr/local/musl/lib/libc.so
else
	# musl libc.so is the ELF interpreter and must be executable
	chmod +x debian/blogi/opt/blogi/usr/local/musl/lib/libc.so
endif
endif

debian/rules.old

0 → 100755
+212 −0
Original line number Diff line number Diff line
#!/usr/bin/make -f

export DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

%:
	dh $@ --buildsystem=cmake

TOOLCHAIN_FILE = /usr/local/musl/share/musl-llvm-toolchain.cmake
IS_NSPAWN = $(filter nspawn,$(DEB_BUILD_PROFILES))

override_dh_auto_configure:
ifneq ($(IS_NSPAWN),)
	dh_auto_configure -- \
		-DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE) \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DCMAKE_INSTALL_LIBDIR=lib/$(DEB_HOST_MULTIARCH) \
		-DCMAKE_BUILD_TYPE=Release \
		-DBUILD_EDITOR=ON
else
	dh_auto_configure -- \
		-DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE) \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DCMAKE_INSTALL_LIBDIR=lib/$(DEB_HOST_MULTIARCH) \
		-DCMAKE_BUILD_TYPE=Release \
		-DBUILD_EDITOR=ON
endif

override_dh_shlibdeps:
ifneq ($(IS_EDITOR),)
	@echo "Skipping dh_shlibdeps for editor (self-contained nspawn container)"
else ifneq ($(IS_NSPAWN),)
	dh_shlibdeps -- --ignore-missing-info
else
	dh_shlibdeps
endif

override_dh_dwz:
ifneq ($(IS_NSPAWN),)
	@echo "Skipping dh_dwz (DWARF5 from clang not supported by dwz)"
else
	dh_dwz
endif

override_dh_install:
	dh_install
ifneq ($(IS_NSPAWN),)
	@echo "Editor nspawn build — assembling chroot at /opt/blogi-editor"
	# musl dynamic linker
	mkdir -p debian/blogi-editor/opt/blogi-editor/lib
	cp -a /usr/local/musl/lib/ld-musl-x86_64.so.1 debian/blogi-editor/opt/blogi-editor/lib/
	# musl libc
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/local/musl/lib
	cp -a /usr/local/musl/lib/libc.so debian/blogi-editor/opt/blogi-editor/usr/local/musl/lib/
	chmod +x debian/blogi-editor/opt/blogi-editor/usr/local/musl/lib/libc.so
	# musl-built shared libraries
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/local/lib
	cp -a /usr/local/lib/*.so* debian/blogi-editor/opt/blogi-editor/usr/local/lib/
	# confplus config backend plugins
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/local/lib/confplus/backend
	cp -a /usr/local/lib/confplus/backend/*.cfg.so debian/blogi-editor/opt/blogi-editor/usr/local/lib/confplus/backend/
	# dbpp database backend plugins
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/local/lib/dbpp
	cp -a /usr/local/lib/dbpp/*.so debian/blogi-editor/opt/blogi-editor/usr/local/lib/dbpp/
	# editor binary
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/bin
	cp -a debian/blogi-editor/usr/bin/blogi-editor debian/blogi-editor/opt/blogi-editor/usr/bin/
	# editor widget plugins
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/lib/blogi/plugins/webedit
	-cp -a debian/blogi-editor/usr/lib/blogi/plugins/webedit/*.so debian/blogi-editor/opt/blogi-editor/usr/lib/blogi/plugins/webedit/
	# blogidev library (plugin runtime dependency)
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/lib/blogi
	-cp -a debian/blogi-editor/usr/lib/blogi/libblogidev.* debian/blogi-editor/opt/blogi-editor/usr/lib/blogi/
	# Static content (HTML, CSS, JS)
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/share/blogi-editor
	-cp -a debian/blogi-editor/usr/share/blogi-editor/* debian/blogi-editor/opt/blogi-editor/usr/share/blogi-editor/
	# Minimal container filesystem
	mkdir -p debian/blogi-editor/opt/blogi-editor/etc/blogi-editor/ssl
	mkdir -p debian/blogi-editor/opt/blogi-editor/var/lib/blogi-editor
	mkdir -p debian/blogi-editor/opt/blogi-editor/proc
	mkdir -p debian/blogi-editor/opt/blogi-editor/sys
	mkdir -p debian/blogi-editor/opt/blogi-editor/dev
	mkdir -p debian/blogi-editor/opt/blogi-editor/run
	mkdir -p debian/blogi-editor/opt/blogi-editor/tmp
	# Container user database
	echo "root:x:0:0:root:/root:/bin/false" > debian/blogi-editor/opt/blogi-editor/etc/passwd
	echo "blogi-editor:x:998:998:blogi-editor:/var/lib/blogi-editor:/bin/false" >> debian/blogi-editor/opt/blogi-editor/etc/passwd
	echo "root:x:0:" > debian/blogi-editor/opt/blogi-editor/etc/group
	echo "blogi-editor:x:998:" >> debian/blogi-editor/opt/blogi-editor/etc/group
	# nspawn and systemd config
	install -D -m 644 debian/blogi-editor.nspawn debian/blogi-editor/etc/systemd/nspawn/blogi-editor.nspawn
	install -D -m 644 debian/blogi-editor.default-config.yaml debian/blogi-editor/usr/share/blogi-editor/blogi-editor.default-config.yaml
	install -D -m 644 debian/blogi-editor.tmpfiles debian/blogi-editor/usr/lib/tmpfiles.d/blogi-editor.conf
	install -D -m 644 debian/blogi-editor.sysusers debian/blogi-editor/usr/lib/sysusers.d/blogi-editor.conf
else
	@echo "Editor build — assembling chroot at /opt/blogi-editor (system libs)"
	# editor binary
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/bin
	cp -a debian/blogi-editor/usr/bin/blogi-editor debian/blogi-editor/opt/blogi-editor/usr/bin/
	# Copy all shared library dependencies into chroot
	mkdir -p debian/blogi-editor/opt/blogi-editor/lib/x86_64-linux-gnu
	mkdir -p debian/blogi-editor/opt/blogi-editor/lib64
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/lib/x86_64-linux-gnu
	cp -a /lib64/ld-linux-x86-64.so.2 debian/blogi-editor/opt/blogi-editor/lib64/ || true
	for lib in $$(ldd debian/blogi-editor/usr/bin/blogi-editor | grep -o '/[^ ]*'); do \
		dir=$$(dirname "$$lib"); \
		mkdir -p "debian/blogi-editor/opt/blogi-editor$$dir"; \
		cp -aL "$$lib" "debian/blogi-editor/opt/blogi-editor$$dir/" 2>/dev/null || true; \
	done
	# confplus config backend plugins
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/lib/x86_64-linux-gnu/confplus/backend
	-cp -a /usr/lib/x86_64-linux-gnu/confplus/backend/*.cfg.so debian/blogi-editor/opt/blogi-editor/usr/lib/x86_64-linux-gnu/confplus/backend/
	# dbpp database backend plugins
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/lib/x86_64-linux-gnu/dbpp
	-cp -a /usr/lib/x86_64-linux-gnu/dbpp/*.so debian/blogi-editor/opt/blogi-editor/usr/lib/x86_64-linux-gnu/dbpp/
	# Also copy backend deps (each .so may have its own deps)
	for lib in $$(find debian/blogi-editor/opt/blogi-editor/usr/lib/x86_64-linux-gnu/confplus debian/blogi-editor/opt/blogi-editor/usr/lib/x86_64-linux-gnu/dbpp -name '*.so' 2>/dev/null); do \
		for dep in $$(ldd "$$lib" 2>/dev/null | grep -o '/[^ ]*'); do \
			dir=$$(dirname "$$dep"); \
			mkdir -p "debian/blogi-editor/opt/blogi-editor$$dir"; \
			cp -anL "$$dep" "debian/blogi-editor/opt/blogi-editor$$dir/" 2>/dev/null || true; \
		done; \
	done
	# editor widget plugins
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/lib/blogi/plugins/webedit
	-cp -a debian/blogi-editor/usr/lib/blogi/plugins/webedit/*.so debian/blogi-editor/opt/blogi-editor/usr/lib/blogi/plugins/webedit/
	# blogidev library (plugin runtime dependency)
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/lib/blogi
	-cp -a debian/blogi-editor/usr/lib/blogi/libblogidev.* debian/blogi-editor/opt/blogi-editor/usr/lib/blogi/
	# Static content (HTML, CSS, JS)
	mkdir -p debian/blogi-editor/opt/blogi-editor/usr/share/blogi-editor
	-cp -a debian/blogi-editor/usr/share/blogi-editor/* debian/blogi-editor/opt/blogi-editor/usr/share/blogi-editor/
	# Minimal container filesystem
	mkdir -p debian/blogi-editor/opt/blogi-editor/etc/blogi-editor/ssl
	mkdir -p debian/blogi-editor/opt/blogi-editor/var/lib/blogi-editor
	mkdir -p debian/blogi-editor/opt/blogi-editor/proc
	mkdir -p debian/blogi-editor/opt/blogi-editor/sys
	mkdir -p debian/blogi-editor/opt/blogi-editor/dev
	mkdir -p debian/blogi-editor/opt/blogi-editor/run
	mkdir -p debian/blogi-editor/opt/blogi-editor/tmp
	# Container user database
	echo "root:x:0:0:root:/root:/bin/false" > debian/blogi-editor/opt/blogi-editor/etc/passwd
	echo "blogi-editor:x:998:998:blogi-editor:/var/lib/blogi-editor:/bin/false" >> debian/blogi-editor/opt/blogi-editor/etc/passwd
	echo "root:x:0:" > debian/blogi-editor/opt/blogi-editor/etc/group
	echo "blogi-editor:x:998:" >> debian/blogi-editor/opt/blogi-editor/etc/group
	# nspawn and systemd config
	install -D -m 644 debian/blogi-editor.nspawn debian/blogi-editor/etc/systemd/nspawn/blogi-editor.nspawn
	install -D -m 644 debian/blogi-editor.default-config.yaml debian/blogi-editor/usr/share/blogi-editor/blogi-editor.default-config.yaml
	install -D -m 644 debian/blogi-editor.tmpfiles debian/blogi-editor/usr/lib/tmpfiles.d/blogi-editor.conf
	install -D -m 644 debian/blogi-editor.sysusers debian/blogi-editor/usr/lib/sysusers.d/blogi-editor.conf
endif
else ifneq ($(IS_NSPAWN),)
	@echo "Nspawn build — assembling complete chroot at /opt/blogi"
	# musl dynamic linker (binary interpreter: /lib/ld-musl-x86_64.so.1)
	mkdir -p debian/blogi/opt/blogi/lib
	cp -a /usr/local/musl/lib/ld-musl-x86_64.so.1 debian/blogi/opt/blogi/lib/
	# musl libc (RUNPATH: /usr/local/musl/lib)
	mkdir -p debian/blogi/opt/blogi/usr/local/musl/lib
	cp -a /usr/local/musl/lib/libc.so debian/blogi/opt/blogi/usr/local/musl/lib/
	chmod +x debian/blogi/opt/blogi/usr/local/musl/lib/libc.so
	# All musl-built shared libraries (RUNPATH: /usr/local/lib)
	mkdir -p debian/blogi/opt/blogi/usr/local/lib
	cp -a /usr/local/lib/*.so* debian/blogi/opt/blogi/usr/local/lib/
	# confplus config backend plugins (yaml.cfg.so etc.)
	mkdir -p debian/blogi/opt/blogi/usr/local/lib/confplus/backend
	cp -a /usr/local/lib/confplus/backend/*.cfg.so debian/blogi/opt/blogi/usr/local/lib/confplus/backend/
	# dbpp database backend plugins (pgsql.so, sqlite.so)
	mkdir -p debian/blogi/opt/blogi/usr/local/lib/dbpp
	cp -a /usr/local/lib/dbpp/*.so debian/blogi/opt/blogi/usr/local/lib/dbpp/
	# blogi binary
	mkdir -p debian/blogi/opt/blogi/usr/bin
	cp -a debian/blogi/usr/bin/blogi debian/blogi/opt/blogi/usr/bin/
	# blogi plugins
	mkdir -p debian/blogi/opt/blogi/usr/lib/blogi/plugins
	-cp -a debian/blogi/usr/lib/blogi/plugins/*.so debian/blogi/opt/blogi/usr/lib/blogi/plugins/
	# blogidev library (plugin runtime dependency)
	-cp -a debian/blogi/usr/lib/blogi/libblogidev.* debian/blogi/opt/blogi/usr/lib/blogi/
	# Static content (themes, JS, CSS)
	mkdir -p debian/blogi/opt/blogi/usr/share/blogi
	-cp -a debian/blogi/usr/share/blogi/* debian/blogi/opt/blogi/usr/share/blogi/
	# Minimal container filesystem
	mkdir -p debian/blogi/opt/blogi/etc/blogi/ssl
	mkdir -p debian/blogi/opt/blogi/var/lib/blogi
	mkdir -p debian/blogi/opt/blogi/proc
	mkdir -p debian/blogi/opt/blogi/sys
	mkdir -p debian/blogi/opt/blogi/dev
	mkdir -p debian/blogi/opt/blogi/run
	mkdir -p debian/blogi/opt/blogi/tmp
	# Container user database
	echo "root:x:0:0:root:/root:/bin/false" > debian/blogi/opt/blogi/etc/passwd
	echo "blogi:x:999:999:blogi:/var/lib/blogi:/bin/false" >> debian/blogi/opt/blogi/etc/passwd
	echo "root:x:0:" > debian/blogi/opt/blogi/etc/group
	echo "blogi:x:999:" >> debian/blogi/opt/blogi/etc/group
	# nspawn and systemd config
	install -D -m 644 debian/blogi.nspawn debian/blogi/etc/systemd/nspawn/blogi.nspawn
	install -D -m 644 debian/blogi.default-config.yaml debian/blogi/usr/share/blogi/blogi.default-config.yaml
	install -D -m 644 debian/blogi.tmpfiles debian/blogi/usr/lib/tmpfiles.d/blogi.conf
	install -D -m 644 debian/blogi.sysusers debian/blogi/usr/lib/sysusers.d/blogi.conf
else
	install -D -m 644 debian/blogi.default-config.yaml debian/blogi/usr/share/blogi/blogi.default-config.yaml
	install -D -m 644 debian/blogi.tmpfiles debian/blogi/usr/lib/tmpfiles.d/blogi.conf
	install -D -m 644 debian/blogi.sysusers debian/blogi/usr/lib/sysusers.d/blogi.conf
endif

override_dh_fixperms:
	dh_fixperms
ifneq ($(IS_NSPAWN),)
	chmod +x debian/blogi-editor/opt/blogi-editor/usr/local/musl/lib/libc.so
else
	# musl libc.so is the ELF interpreter and must be executable
	chmod +x debian/blogi/opt/blogi/usr/local/musl/lib/libc.so
endif
endif