Skip to content

Commit 9031ff0

Browse files
Vitexusclaude
andcommitted
feat: modernise Debian packaging per pack-as-deb skill
- Bump debhelper-compat 12→13, drop moreutils, add appstream to Build-Depends - Replace composer-debian with composer in Depends - Add PKG_VERSION/PKG_SOURCE/PKG_TYPE Make vars to debian/rules - Create debian/autoload.php: loads system deps (Ease*, EaseFluentPDO, EaseHtmlWidgets), registers PSR-4 for project and CSasAccounts classes, bundles league/oauth2-client, guzzlehttp/*, psr/http-*, kint, getallheaders - Replace runtime composer install with build-time cp -r of vendor packages - Inject APP_NAME, APP_VERSION and InstalledVersions data at dh_install time - Remove debian/tmp/composer.json from install (no longer needed) - Fix metainfo: web-application type, captions on screenshots, homepage URL, developer and content-rating tags — passes appstreamcli --pedantic Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent b7f9c78 commit 9031ff0

5 files changed

Lines changed: 151 additions & 31 deletions

File tree

debian/autoload.php

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
require_once '/usr/share/php/Composer/InstalledVersions.php';
6+
require_once '/usr/share/php/Ease/autoload.php';
7+
require_once '/usr/share/php/EaseTWB5/autoload.php';
8+
require_once '/usr/share/php/EaseHtml/autoload.php';
9+
require_once '/usr/share/php/EaseHtmlWidgets/autoload.php';
10+
require_once '/usr/share/php/EaseFluentPDO/autoload.php';
11+
12+
// Bundled vendor helpers (files autoload)
13+
require_once '/usr/lib/csas-authorize/vendor/getallheaders.php';
14+
require_once '/usr/lib/csas-authorize/vendor/kint_init.php';
15+
require_once '/usr/lib/csas-authorize/vendor/GuzzleHttp/functions_include.php';
16+
17+
// System CSasAccounts library (SpojeNet\CSas\Accounts\*, SpojeNet\CSas\Modes\*, etc.)
18+
spl_autoload_register(function (string $class): void {
19+
$prefix = 'SpojeNet\\CSas\\';
20+
if (str_starts_with($class, $prefix)) {
21+
$file = '/usr/share/php/CSasAccounts/' . str_replace('\\', '/', substr($class, strlen($prefix))) . '.php';
22+
if (file_exists($file)) {
23+
require $file;
24+
}
25+
}
26+
});
27+
28+
// Project's own CSas application classes
29+
spl_autoload_register(function (string $class): void {
30+
$prefix = 'SpojeNet\\CSas\\';
31+
if (str_starts_with($class, $prefix)) {
32+
$file = '/usr/lib/csas-authorize/CSas/' . str_replace('\\', '/', substr($class, strlen($prefix))) . '.php';
33+
if (file_exists($file)) {
34+
require $file;
35+
}
36+
}
37+
});
38+
39+
// Bundled vendor packages
40+
spl_autoload_register(function (string $class): void {
41+
$map = [
42+
'League\\OAuth2\\Client\\' => '/usr/lib/csas-authorize/vendor/League/OAuth2/Client/',
43+
'GuzzleHttp\\Psr7\\' => '/usr/lib/csas-authorize/vendor/GuzzleHttp/Psr7/',
44+
'GuzzleHttp\\Promise\\' => '/usr/lib/csas-authorize/vendor/GuzzleHttp/Promise/',
45+
'GuzzleHttp\\' => '/usr/lib/csas-authorize/vendor/GuzzleHttp/',
46+
'Psr\\Http\\Client\\' => '/usr/lib/csas-authorize/vendor/Psr/Http/Client/',
47+
'Psr\\Http\\Message\\' => '/usr/lib/csas-authorize/vendor/Psr/Http/Message/',
48+
'Kint\\' => '/usr/lib/csas-authorize/vendor/Kint/',
49+
];
50+
foreach ($map as $prefix => $base) {
51+
if (str_starts_with($class, $prefix)) {
52+
$file = $base . str_replace('\\', '/', substr($class, strlen($prefix))) . '.php';
53+
if (file_exists($file)) {
54+
require $file;
55+
}
56+
return;
57+
}
58+
}
59+
});
60+
61+
(function (): void {
62+
$versions = [];
63+
foreach (\Composer\InstalledVersions::getAllRawData() as $d) {
64+
$versions = array_merge($versions, $d['versions'] ?? []);
65+
}
66+
$name = 'unknown';
67+
$version = '0.0.0';
68+
$versions[$name] = ['pretty_version' => $version, 'version' => $version,
69+
'reference' => null, 'type' => 'library', 'install_path' => __DIR__,
70+
'aliases' => [], 'dev_requirement' => false];
71+
\Composer\InstalledVersions::reload([
72+
'root' => ['name' => $name, 'pretty_version' => $version, 'version' => $version,
73+
'reference' => null, 'type' => 'library', 'install_path' => __DIR__,
74+
'aliases' => [], 'dev' => false],
75+
'versions' => $versions,
76+
]);
77+
})();

debian/control

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
Source: csas-authorize
2-
Build-Depends: debhelper (>= 7.0.50~), debhelper-compat (= 12), po-debconf,moreutils, jq, composer
2+
Build-Depends: debhelper-compat (= 13), po-debconf, jq, composer, appstream
33
Standards-Version: 3.8.4
44
Maintainer: Vítězslav Dvořák <info@vitexsoftware.cz>
55
Uploaders: Vitex <vitex@hippy.cz>
66
Priority: optional
77
Homepage: https://github.com/Spoje-NET/csas-authorize
88

99
Package: csas-authorize
10-
Depends: ${misc:Depends}, composer-debian, php-intl,php-vitexsoftware-ease-bootstrap5, php-vitexsoftware-ease-html-widgets (>=1.1.1),php-vitexsoftware-ease-bootstrap5-widgets, php-vitexsoftware-ease-fluentpdo, php-spojenet-csas-accountsapi, php-robmorgan-phinx|php-cakephp-phinx, csas-authorize-sqlite|csas-authorize-mysql
10+
Depends: ${misc:Depends}, composer, php-intl, php-vitexsoftware-ease-bootstrap5, php-vitexsoftware-ease-html-widgets (>= 1.1.1), php-vitexsoftware-ease-bootstrap5-widgets, php-vitexsoftware-ease-fluentpdo, php-spojenet-csas-accountsapi, php-robmorgan-phinx | php-cakephp-phinx, csas-authorize-sqlite | csas-authorize-mysql
1111
Architecture: all
1212
Section: web
1313
Priority: optional

debian/csas-authorize.install

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ src/images/* usr/share/csas-authorize/images
55
db/migrations/* usr/lib/csas-authorize/db/migrations
66
#db/seeds/* usr/lib/csas-authorize/db/seeds
77
libexec/*.php usr/libexec/csas-authorize
8-
debian/tmp/composer.json usr/lib/csas-authorize
98
debian/conf/phinx-adapter.php usr/lib/csas-authorize
109

1110

debian/io.github.spoje_net.csas_authorize.metainfo.xml

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,40 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<component type="desktop-application">
2+
<component type="web-application">
33
<id>io.github.spoje_net.csas_authorize</id>
4-
5-
<name>CSAS Authorize</name>
6-
<summary> Obtain Access Key from CSAS/Erste</summary>
7-
84
<metadata_license>MIT</metadata_license>
95
<project_license>MIT</project_license>
10-
6+
<name>CSAS Authorize</name>
7+
<summary>Obtain Access Key from CSAS/Erste</summary>
118
<description>
129
<p>
13-
This application provides a simple way to authorize your application with CSAS API.
10+
Web application providing an OAuth2 callback endpoint for CSAS/Erste bank APIs.
11+
Manages obtaining, renewing and storing access tokens for your Erste/CSAS applications.
1412
</p>
1513
</description>
16-
17-
<launchable type="desktop-id">io.github.spoje_net.csas_authorize.desktop</launchable>
14+
<icon type="stock">network-transmit-receive</icon>
15+
<launchable type="url">http://localhost/csas-authorize/</launchable>
1816
<screenshots>
1917
<screenshot type="default">
20-
<image>https://github.com/Spoje-NET/csas-authorize/apps-screenshot.png?raw=true</image>
18+
<caption>Application overview</caption>
19+
<image>https://github.com/Spoje-NET/csas-authorize/raw/main/apps-screenshot.png</image>
2120
</screenshot>
2221
<screenshot>
23-
<image>https://github.com/Spoje-NET/csas-authorize/app-screenshot.png?raw=true</image>
22+
<caption>Single application view</caption>
23+
<image>https://github.com/Spoje-NET/csas-authorize/raw/main/app-screenshot.png</image>
2424
</screenshot>
2525
<screenshot>
26-
<image>https://github.com/Spoje-NET/csas-authorize/token-screenshot.png?raw=true</image>
26+
<caption>Token management</caption>
27+
<image>https://github.com/Spoje-NET/csas-authorize/raw/main/token-screenshot.png</image>
2728
</screenshot>
2829
</screenshots>
30+
<categories>
31+
<category>Network</category>
32+
<category>Finance</category>
33+
</categories>
34+
<url type="homepage">https://github.com/Spoje-NET/csas-authorize</url>
35+
<url type="bugtracker">https://github.com/Spoje-NET/csas-authorize/issues</url>
36+
<developer id="cz.vitexsoftware">
37+
<name>VitexSoftware</name>
38+
</developer>
39+
<content_rating type="oars-1.1"/>
2940
</component>
30-

debian/rules

Lines changed: 49 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,59 @@
11
#!/usr/bin/make -f
22

3+
PKG_VERSION := $(shell dpkg-parsechangelog -S Version | sed 's/~.*//')
4+
PKG_SOURCE := $(shell jq -r '.name' composer.json)
5+
PKG_TYPE := $(shell jq -r '.type' composer.json)
6+
7+
BUNDLED := debian/csas-authorize/usr/lib/csas-authorize/vendor
8+
39
%:
410
dh $@
511

612
override_dh_install:
7-
mkdir -p debian/tmp/
8-
jq '.version = "'`dpkg-parsechangelog | sed -n 's/^Version: //p'| sed 's/~.*//'`'"' debian/conf/composer.json |sponge debian/tmp/composer.json
913
dh_install
10-
sed -i -e 's/\.\.\/i18n/\/usr\/share\/locale/g' debian/csas-authorize/usr/share/csas-authorize/init.php
11-
mkdir -p debian/csas-authorize-sqlite/usr/lib/csas-authorize
12-
cp debian/conf/.env.template debian/csas-authorize-sqlite/usr/lib/csas-authorize
13-
mkdir -p debian/csas-authorize-mysql/usr/lib/csas-authorize
14-
cp debian/conf/.env.template debian/csas-authorize-mysql/usr/lib/csas-authorize
15-
sed -i '/DB_DATABASE/c\DB_DATABASE=_DBC_DBNAME_' debian/csas-authorize-*sql/usr/lib/csas-authorize/.env.template
16-
sed -i '/DB_CONNECTION/c\DB_CONNECTION=sqlite' debian/csas-authorize-sqlite/usr/lib/csas-authorize/.env.template
17-
sed -i '/DB_CONNECTION/c\DB_CONNECTION=mysql' debian/csas-authorize-mysql/usr/lib/csas-authorize/.env.template
18-
touch debian/csas-authorize-sqlite/var/lib/dbconfig-common/sqlite3/csas-authorize/csas-authorize
19-
sed -i -e 's/..\/vendor/\/var\/lib\/composer\/csas-authorize/g' debian/csas-authorize/usr/*/csas-authorize/*.php
20-
sed -i -e 's/\.\.\/\.env/\/etc\/csas-authorize\/csas-authorize\.env/g' debian/csas-authorize/usr/*/csas-authorize/*.php
21-
sed -i -e 's/\.\.\/src\/init\.php/\/usr\/share\/csas-authorize\/init\.php/g' debian/csas-authorize/usr/*/csas-authorize/*.php
22-
sed -i -e 's/..\/i18n/\/usr\/share\/locale/g' debian/csas-authorize/usr/share/csas-authorize/init.php
14+
# Bundle vendor packages that have no Debian equivalent
15+
install -d $(BUNDLED)/League/OAuth2
16+
cp -r vendor/league/oauth2-client/src $(BUNDLED)/League/OAuth2/Client
17+
cp -r vendor/guzzlehttp/guzzle/src $(BUNDLED)/GuzzleHttp
18+
cp -r vendor/guzzlehttp/psr7/src $(BUNDLED)/GuzzleHttp/Psr7
19+
cp -r vendor/guzzlehttp/promises/src $(BUNDLED)/GuzzleHttp/Promise
20+
install -d $(BUNDLED)/Psr/Http
21+
cp -r vendor/psr/http-message/src $(BUNDLED)/Psr/Http/Message
22+
cp vendor/psr/http-factory/src/*.php $(BUNDLED)/Psr/Http/Message/
23+
install -d $(BUNDLED)/Psr/Http/Client
24+
cp vendor/psr/http-client/src/*.php $(BUNDLED)/Psr/Http/Client/
25+
cp vendor/ralouphie/getallheaders/src/getallheaders.php $(BUNDLED)/getallheaders.php
26+
cp -r vendor/kint-php/kint/src $(BUNDLED)/Kint
27+
cp vendor/kint-php/kint/init.php $(BUNDLED)/kint_init.php
28+
# Install static autoloader
29+
install -m 644 debian/autoload.php \
30+
debian/csas-authorize/usr/share/csas-authorize/autoload.php
31+
# Fix path references in installed PHP files
32+
sed -i -e "s|require_once '../vendor/autoload.php'|require_once '/usr/share/csas-authorize/autoload.php'|g" \
33+
debian/csas-authorize/usr/share/csas-authorize/*.php \
34+
debian/csas-authorize/usr/libexec/csas-authorize/*.php
35+
sed -i -e 's/\.\.\/i18n/\/usr\/share\/locale/g' \
36+
debian/csas-authorize/usr/share/csas-authorize/init.php
37+
sed -i -e 's/\.\.\/\.env/\/etc\/csas-authorize\/csas-authorize\.env/g' \
38+
debian/csas-authorize/usr/share/csas-authorize/*.php \
39+
debian/csas-authorize/usr/libexec/csas-authorize/*.php
40+
sed -i -e 's/\.\.\/src\/init\.php/\/usr\/share\/csas-authorize\/init\.php/g' \
41+
debian/csas-authorize/usr/libexec/csas-authorize/*.php
42+
# Inject APP_NAME, APP_VERSION and InstalledVersions at build time
43+
sed -i "1a defined('APP_NAME') || define('APP_NAME', '$(PKG_SOURCE)');" \
44+
debian/csas-authorize/usr/share/csas-authorize/autoload.php
45+
sed -i "s|'unknown'|'$(PKG_SOURCE)'|" \
46+
debian/csas-authorize/usr/share/csas-authorize/autoload.php
47+
sed -i "s|'0.0.0'|'$(PKG_VERSION)'|" \
48+
debian/csas-authorize/usr/share/csas-authorize/autoload.php
49+
sed -i "s|'library'|'$(PKG_TYPE)'|g" \
50+
debian/csas-authorize/usr/share/csas-authorize/autoload.php
51+
sed -i "2a defined('APP_VERSION') || define('APP_VERSION', '$(PKG_VERSION)');" \
52+
debian/csas-authorize/usr/share/csas-authorize/autoload.php
53+
54+
override_dh_auto_test:
55+
appstreamcli validate --pedantic --no-net \
56+
debian/io.github.spoje_net.csas_authorize.metainfo.xml
2357

2458
override_dh_clean:
2559
debconf-updatepo

0 commit comments

Comments
 (0)