@@ -411,7 +411,13 @@ jobs:
411411 deb_upstream_version="${VERSION/-rc./~rc.}"
412412 deb_revision="${DEB_REVISION}"
413413 deb_version="${deb_upstream_version}-${deb_revision}"
414- pkg_root="dist/deb-root"
414+ if [[ -e debian ]]; then
415+ echo "::error title=Unexpected debian directory::The release workflow expects no repository debian/ directory."
416+ exit 1
417+ fi
418+
419+ trap 'rm -rf debian' EXIT
420+ pkg_root="debian/gitcomet"
415421 mkdir -p "${pkg_root}/DEBIAN"
416422 mkdir -p "${pkg_root}/usr/bin"
417423 mkdir -p "${pkg_root}/usr/share/applications"
@@ -421,24 +427,60 @@ jobs:
421427 install -m644 dist/gitcomet.desktop "${pkg_root}/usr/share/applications/gitcomet.desktop"
422428 install -m644 assets/gitcomet-512.png "${pkg_root}/usr/share/icons/hicolor/512x512/apps/gitcomet.png"
423429
424- shlib_depends="$(dpkg-shlibdeps -O "${pkg_root}/usr/bin/gitcomet" | sed -n 's/^shlibs:Depends=//p')"
425- depends="git"
426- if [[ -n "${shlib_depends}" ]]; then
427- depends="${depends}, ${shlib_depends}"
428- fi
429-
430430 {
431+ echo "Source: gitcomet"
432+ echo "Maintainer: AutoExplore Oy <info@autoexplore.ai>"
433+ echo "Section: utils"
434+ echo "Priority: optional"
435+ echo "Standards-Version: 4.7.0"
436+ echo
431437 echo "Package: gitcomet"
432- echo "Version: ${deb_version}"
433438 echo "Architecture: ${DEB_ARCH}"
434- echo "Maintainer: AutoExplore Oy <info@autoexplore.ai>"
435- echo "Depends: ${depends}"
439+ echo "Depends: git, \${shlibs:Depends}"
436440 echo "Section: utils"
437441 echo "Priority: optional"
438442 echo "Description: Fast, resource-efficient Git GUI written in Rust."
439- } > "${pkg_root}/DEBIAN/ control"
443+ } > debian/ control
440444
441- dpkg-deb --build "${pkg_root}" "dist/gitcomet_${deb_version}_${DEB_ARCH}.deb"
445+ {
446+ echo "gitcomet (${deb_version}) unstable; urgency=medium"
447+ echo
448+ echo " * Release ${VERSION}."
449+ echo
450+ echo " -- AutoExplore Oy <info@autoexplore.ai> $(date -Ru)"
451+ } > debian/changelog
452+
453+ dpkg-shlibdeps -Tdebian/substvars "${pkg_root}/usr/bin/gitcomet"
454+ dpkg-gencontrol -pgitcomet -P"${pkg_root}" -Tdebian/substvars
455+
456+ pkg_file="dist/gitcomet_${deb_version}_${DEB_ARCH}.deb"
457+ dpkg-deb --build "${pkg_root}" "${pkg_file}"
458+
459+ package_name="$(dpkg-deb -f "${pkg_file}" Package)"
460+ package_version="$(dpkg-deb -f "${pkg_file}" Version)"
461+ package_architecture="$(dpkg-deb -f "${pkg_file}" Architecture)"
462+ package_depends="$(dpkg-deb -f "${pkg_file}" Depends)"
463+
464+ if [[ "${package_name}" != "gitcomet" ]]; then
465+ echo "::error title=Unexpected package name::Got ${package_name}."
466+ exit 1
467+ fi
468+ if [[ "${package_version}" != "${deb_version}" ]]; then
469+ echo "::error title=Unexpected package version::Got ${package_version}, expected ${deb_version}."
470+ exit 1
471+ fi
472+ if [[ "${package_architecture}" != "${DEB_ARCH}" ]]; then
473+ echo "::error title=Unexpected package architecture::Got ${package_architecture}, expected ${DEB_ARCH}."
474+ exit 1
475+ fi
476+ if ! grep -Eq '(^|, )git($|, )' <<<"${package_depends}"; then
477+ echo "::error title=Missing git dependency::Got ${package_depends}."
478+ exit 1
479+ fi
480+ if [[ "${package_depends}" == "git" ]]; then
481+ echo "::error title=Missing shared library dependencies::Got ${package_depends}."
482+ exit 1
483+ fi
442484
443485 - name : Package AppImage
444486 if : ${{ matrix.build_appimage }}
0 commit comments