debian: stage under debian/tmp/ via dh_install override
Initial debian/rules wrote into debian/postit/usr/... directly. That fails: dh_clean (run between override_dh_auto_build and dh_install) wipes the package staging dir, and dh_install needs debian/tmp/ as the canonical staging area to install files into debian/postit/. Move the cp-and-convert block out of override_dh_auto_build into a 'stage_postit' make define, and call it from override_dh_install right before dh_install moves files into the package tree. Also: simplify POSTIT_* path variables — drop the duplicated POSTIT_APP_DIR / POSTIT_LIB_DIR / POSTIT_BIN_DIR / POSTIT_SHARE_DIR set (they all derived from debian/postit which is now what dh_install populates).
This commit is contained in:
parent
8cda50c1fb
commit
78a56d3e68
1 changed files with 59 additions and 64 deletions
123
debian/rules
vendored
123
debian/rules
vendored
|
|
@ -4,104 +4,99 @@
|
||||||
#
|
#
|
||||||
# Pipeline:
|
# Pipeline:
|
||||||
# 1. Clone pazof/yavsc at POSTIT_GIT_TAG into a clean working
|
# 1. Clone pazof/yavsc at POSTIT_GIT_TAG into a clean working
|
||||||
# tree under $(BUILDDIR)/yavsc-src.
|
# tree under build/yavsc-src.
|
||||||
# 2. Restore + publish src/PostIt/PostIt.Desktop as a
|
# 2. dotnet publish src/PostIt/PostIt.Desktop — framework-
|
||||||
# linux-x64, framework-dependent (not self-contained)
|
# dependent (not self-contained), into build/postit-app.
|
||||||
# assembly tree into $(BUILDDIR)/postit-app.
|
# 3. Render the icon at the hicolor sizes from
|
||||||
# 3. Render the icon at the hicolor sizes (16, 32, 48,
|
# src/PostIt/PostIt/Assets/Icon.png, plus the SVG as the
|
||||||
# 64, 128, 256) from src/PostIt/PostIt/Assets/Icon.png,
|
# scalable form.
|
||||||
# plus the SVG from the same directory as the scalable
|
# 4. Stage everything under debian/tmp/ — the layout dh_install
|
||||||
# form.
|
# expects:
|
||||||
# 4. Lay out the package tree:
|
|
||||||
# /usr/lib/postit/ (managed assemblies)
|
# /usr/lib/postit/ (managed assemblies)
|
||||||
# /usr/bin/postit (wrapper script)
|
# /usr/bin/postit (wrapper script)
|
||||||
# /usr/share/applications/ (postit.desktop)
|
# /usr/share/applications/ (postit.desktop)
|
||||||
# /usr/share/icons/hicolor/ (icons)
|
# /usr/share/icons/hicolor/ (icons)
|
||||||
# 5. Run dh to install, fix permissions, build the binary
|
# 5. dh_install moves it all into debian/postit/ and the rest
|
||||||
# package.
|
# of the dh_* helpers assemble the .deb.
|
||||||
#
|
|
||||||
# Override POSTIT_GIT_TAG or POSTIT_GIT_URL on the make command
|
|
||||||
# line to build a different upstream revision:
|
|
||||||
#
|
|
||||||
# make deb POSTIT_GIT_TAG=1.0.1
|
|
||||||
# make deb POSTIT_GIT_URL=https://github.com/fork/yavsc.git
|
|
||||||
|
|
||||||
POSTIT_GIT_URL ?= https://github.com/pazof/yavsc.git
|
POSTIT_GIT_URL ?= https://github.com/pazof/yavsc.git
|
||||||
POSTIT_GIT_TAG ?= 1.0.0
|
POSTIT_GIT_TAG ?= 1.0.0
|
||||||
POSTIT_DESKTOP_PROJECT := src/PostIt/PostIt.Desktop/PostIt.Desktop.csproj
|
POSTIT_DESKTOP_PROJECT := src/PostIt/PostIt.Desktop/PostIt.Desktop.csproj
|
||||||
POSTIT_ASSEMBLY_NAME := PostIt.Desktop
|
|
||||||
POSTIT_APP_DIR := $(CURDIR)/debian/postit
|
|
||||||
POSTIT_LIB_DIR := $(POSTIT_APP_DIR)/usr/lib/postit
|
|
||||||
POSTIT_BIN_DIR := $(POSTIT_APP_DIR)/usr/bin
|
|
||||||
POSTIT_SHARE_DIR := $(POSTIT_APP_DIR)/usr/share
|
|
||||||
POSTIT_BUILD_DIR := $(CURDIR)/build
|
POSTIT_BUILD_DIR := $(CURDIR)/build
|
||||||
POSTIT_SRC_DIR := $(POSTIT_BUILD_DIR)/yavsc-src
|
POSTIT_SRC_DIR := $(POSTIT_BUILD_DIR)/yavsc-src
|
||||||
|
POSTIT_TMP := $(CURDIR)/debian/tmp
|
||||||
|
POSTIT_TMP_LIB := $(POSTIT_TMP)/usr/lib/postit
|
||||||
|
POSTIT_TMP_BIN := $(POSTIT_TMP)/usr/bin
|
||||||
|
POSTIT_TMP_SHARE := $(POSTIT_TMP)/usr/share
|
||||||
|
|
||||||
ICON_SIZES := 16 32 48 64 128 256
|
ICON_SIZES := 16 32 48 64 128 256
|
||||||
|
|
||||||
%:
|
%:
|
||||||
dh $@
|
dh $@
|
||||||
|
|
||||||
# dh_auto_clean: nothing to do (we don't have a Debian source
|
|
||||||
# tree yet at clean time, we fetch it in override_dh_auto_build).
|
|
||||||
|
|
||||||
override_dh_auto_clean:
|
override_dh_auto_clean:
|
||||||
rm -rf $(POSTIT_BUILD_DIR)
|
rm -rf $(POSTIT_BUILD_DIR) $(POSTIT_TMP)
|
||||||
|
|
||||||
override_dh_auto_build:
|
override_dh_auto_build:
|
||||||
# 1. Fetch the upstream source.
|
# 1. Fetch the upstream source.
|
||||||
mkdir -p $(POSTIT_BUILD_DIR)
|
mkdir -p $(POSTIT_BUILD_DIR)
|
||||||
git clone --depth=1 --branch $(POSTIT_GIT_TAG) \
|
if [ -d $(POSTIT_SRC_DIR) ]; then \
|
||||||
$(POSTIT_GIT_URL) $(POSTIT_SRC_DIR)
|
git -C $(POSTIT_SRC_DIR) fetch --depth=1 origin $(POSTIT_GIT_TAG); \
|
||||||
|
git -C $(POSTIT_SRC_DIR) reset --hard $(POSTIT_GIT_TAG); \
|
||||||
|
else \
|
||||||
|
git clone --depth=1 --branch $(POSTIT_GIT_TAG) \
|
||||||
|
$(POSTIT_GIT_URL) $(POSTIT_SRC_DIR); \
|
||||||
|
fi
|
||||||
|
|
||||||
# 2. Publish PostIt.Desktop for the host architecture.
|
# 2. Publish PostIt.Desktop for the host architecture.
|
||||||
# --self-contained false : rely on the system .NET
|
# --self-contained false : rely on the system .NET
|
||||||
# runtime (declared in Depends: in debian/control).
|
# runtime (declared in Depends: in debian/control).
|
||||||
# -p:PublishReadyToRun=false : avoid R2R which inflates
|
# -p:PublishReadyToRun=false : avoid R2R which inflates
|
||||||
# the binary for marginal startup gain on a desktop GUI.
|
# the binary for marginal startup gain on a desktop GUI.
|
||||||
cd $(POSTIT_SRC_DIR) && \
|
dotnet publish $(POSTIT_SRC_DIR)/$(POSTIT_DESKTOP_PROJECT) \
|
||||||
dotnet publish $(POSTIT_DESKTOP_PROJECT) \
|
-c Release \
|
||||||
-c Release \
|
--self-contained false \
|
||||||
--self-contained false \
|
--runtime linux-x64 \
|
||||||
-p:PublishReadyToRun=false \
|
-p:PublishReadyToRun=false \
|
||||||
-o $(POSTIT_BUILD_DIR)/postit-app
|
-o $(POSTIT_BUILD_DIR)/postit-app
|
||||||
|
|
||||||
# 3. Lay out the binary tree.
|
|
||||||
mkdir -p $(POSTIT_LIB_DIR)
|
|
||||||
cp -r $(POSTIT_BUILD_DIR)/postit-app/. $(POSTIT_LIB_DIR)/
|
|
||||||
# PostIt.Desktop.dll is the entry assembly; rename or symlink
|
|
||||||
# for clarity (the wrapper references PostIt.Desktop.dll).
|
|
||||||
ls $(POSTIT_LIB_DIR)/ | head -20
|
|
||||||
|
|
||||||
mkdir -p $(POSTIT_BIN_DIR)
|
|
||||||
cp $(CURDIR)/debian/postit.wrapper $(POSTIT_BIN_DIR)/postit
|
|
||||||
chmod 0755 $(POSTIT_BIN_DIR)/postit
|
|
||||||
|
|
||||||
# 4. Icons.
|
|
||||||
mkdir -p $(POSTIT_SHARE_DIR)/applications
|
|
||||||
cp $(CURDIR)/debian/postit.desktop $(POSTIT_SHARE_DIR)/applications/
|
|
||||||
|
|
||||||
mkdir -p $(POSTIT_SHARE_DIR)/icons/hicolor/scalable/apps
|
|
||||||
cp $(POSTIT_SRC_DIR)/src/PostIt/PostIt/Assets/yavsc-logo.svg \
|
|
||||||
$(POSTIT_SHARE_DIR)/icons/hicolor/scalable/apps/postit.svg
|
|
||||||
|
|
||||||
for size in $(ICON_SIZES); do \
|
|
||||||
mkdir -p $(POSTIT_SHARE_DIR)/icons/hicolor/$${size}x$${size}/apps; \
|
|
||||||
convert $(POSTIT_SRC_DIR)/src/PostIt/PostIt/Assets/Icon.png \
|
|
||||||
-resize $${size}x$${size} \
|
|
||||||
$(POSTIT_SHARE_DIR)/icons/hicolor/$${size}x$${size}/apps/postit.png; \
|
|
||||||
done
|
|
||||||
|
|
||||||
override_dh_auto_test:
|
override_dh_auto_test:
|
||||||
# No upstream test suite for PostIt.Desktop at this stage
|
# No upstream test suite for PostIt.Desktop at this stage
|
||||||
# (the Yavsc.Org.Tests project is for the web front, not the
|
# (Yavsc.Org.Tests covers the web front, not the desktop
|
||||||
# desktop client). Build smoke is sufficient for the package.
|
# client). Build smoke is sufficient for the package.
|
||||||
|
|
||||||
override_dh_install:
|
|
||||||
dh_install
|
|
||||||
|
|
||||||
override_dh_shlibdeps:
|
override_dh_shlibdeps:
|
||||||
dh_shlibdeps
|
dh_shlibdeps
|
||||||
|
|
||||||
override_dh_strip:
|
override_dh_strip:
|
||||||
dh_strip --exclude=.pdb
|
dh_strip --exclude=.pdb
|
||||||
|
|
||||||
|
|
||||||
|
define stage_postit
|
||||||
|
mkdir -p $(POSTIT_TMP_LIB)
|
||||||
|
cp -r $(POSTIT_BUILD_DIR)/postit-app/. $(POSTIT_TMP_LIB)/
|
||||||
|
|
||||||
|
mkdir -p $(POSTIT_TMP_BIN)
|
||||||
|
cp $(CURDIR)/debian/postit.wrapper $(POSTIT_TMP_BIN)/postit
|
||||||
|
chmod 0755 $(POSTIT_TMP_BIN)/postit
|
||||||
|
|
||||||
|
mkdir -p $(POSTIT_TMP_SHARE)/applications
|
||||||
|
cp $(CURDIR)/debian/postit.desktop \
|
||||||
|
$(POSTIT_TMP_SHARE)/applications/postit.desktop
|
||||||
|
|
||||||
|
mkdir -p $(POSTIT_TMP_SHARE)/icons/hicolor/scalable/apps
|
||||||
|
cp $(POSTIT_SRC_DIR)/src/PostIt/PostIt/Assets/yavsc-logo.svg \
|
||||||
|
$(POSTIT_TMP_SHARE)/icons/hicolor/scalable/apps/postit.svg
|
||||||
|
|
||||||
|
for size in $(ICON_SIZES); do \
|
||||||
|
mkdir -p $(POSTIT_TMP_SHARE)/icons/hicolor/$${size}x$${size}/apps; \
|
||||||
|
convert $(POSTIT_SRC_DIR)/src/PostIt/PostIt/Assets/Icon.png \
|
||||||
|
-resize $${size}x$${size} \
|
||||||
|
$(POSTIT_TMP_SHARE)/icons/hicolor/$${size}x$${size}/apps/postit.png; \
|
||||||
|
done
|
||||||
|
endef
|
||||||
|
|
||||||
|
override_dh_install:
|
||||||
|
$(call stage_postit)
|
||||||
|
dh_install
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue