pdulvp.fr

Une cible `release` pour les deux paquets, et l'empreinte sous le `~` has been fixed.

See more details at : https://github.com/pdulvp/pdcartes-rami/issues/3

  • cmake --build build --target release fabrique les deux paquets d'une

version en un pas: le deb d'ici et le zip de là-bas, nommés par la version
seule. Les deux binaires sont bâtis avant le premier paquet, pour qu'un Qt
mal désigné ne laisse pas la moitié d'une version sur le disque

  • l'empreinte de build passe du champ release de Debian à la version, derrière

un ~: 1.2.0~261021153337 se classe avant 1.2.0, là où l'ancien
1.2.0-261021153337 se classait après et empêchait la version de s'installer
par-dessus un build de travail. Le champ -N redevient la énième mise en
paquet d'une même version

  • l'absence d'empreinte est à la cible et non à l'arbre: pas d'option de

configuration qu'on laisse allumée sans le voir et qui donnerait un jour deux
paquets d'une même version que dpkg ne sait pas départager

  • QT_WIN_PREFIX est vide par défaut, le chemin d'un Qt étant celui d'une

machine; sans elle release s'arrête en disant quoi passer

Une cible release, et l'empreinte sous le ~

<sub>2026-10-21-1535-cible-release-empreinte-tilde.md — 2026-10-21-1535</sub>

Deux choses qui vont ensemble: une version se nomme par son numéro, et les
builds qui la précèdent se classent en dessous d'elle.

  • cmake --build build --target release fait les deux paquets d'une version,

le deb d'ici et le zip de là-bas, sans empreinte: pdcartes-rami_1.1.0_amd64.deb
et pdcartes-rami-1.1.0-windows-x86_64.zip.

  • un build ordinaire garde son empreinte, mais sous un ~:

1.1.0~261021143413, qui se classe avant 1.1.0 et non après. Vérifié:
dpkg --compare-versions 1.1.0~261021143413 lt 1.1.0 est vrai, là où
l'actuel 1.1.0-261021143413 est gt -- un build de travail installé
empêche la version de s'installer par-dessus.

  • le champ -N de Debian redevient ce qu'il est: la énième mise en paquet

d'une même version.

Décisions

  • L'absence d'empreinte est une propriété de la cible, pas de l'arbre: pas

d'option de configuration qu'on laisse allumée sans le voir.

  • Les arbres build et build-win servent aussi au release. L'arbre reste

avec un binaire sans empreinte après coup; le build ordinaire suivant la
réécrit.

  • Le Qt de Windows arrive par QT_WIN_PREFIX, variable de cache vide par

défaut: pas de chemin de machine dans le dépôt. Sans elle, release
s'arrête en disant quoi passer.

  • Ordre: les deux binaires d'abord, les deux paquets ensuite. Un échec côté

Windows ne doit pas laisser ici la moitié d'une version.

Étapes

  1. [x] cmake/GenerateVersion.cmake — option RELEASE: empreinte vide au

lieu de l'horodatage.

  1. [x] cmake/CPackOptions.cmake — l'empreinte passe du champ release à la

version, derrière un ~; le nom du zip la suit.

  1. [x] src/Version.h — fullVersion() rend la version seule quand

l'empreinte est vide, et le commentaire dit les deux cas.

  1. [x] CMakeLists.txt — QT_WIN_PREFIX / QT_HOST_PATH en cache, et la

cible release en quatre temps (configurer l'arbre Windows, écrire les
deux versions sans empreinte, bâtir les deux binaires, faire les deux
paquets).

  1. [x] Vérifier, en série: un build ordinaire donne 1.1.0~<empreinte> et

--version affiche l'empreinte; release donne 1.1.0 tout court des
deux côtés et --version la version seule; release sans
QT_WIN_PREFIX s'arrête avec son message.

Vérifié

  • build ordinaire: pdcartes-rami_1.2.0~261021153337_amd64.deb, et

--version qui dit 1.2.0 (build 261021153337);

  • release: pdcartes-rami_1.2.0_amd64.deb (champ Version: 1.2.0) et

pdcartes-rami-1.2.0-windows-x86_64.zip, les deux binaires disant 1.2.0
tout court, aucune chaîne d'empreinte dans l'exe;

  • release sans QT_WIN_PREFIX: le message, puis un échec;
  • après un release, le build ordinaire suivant réécrit l'empreinte dans

l'arbre.

Deux pièges rencontrés

Les lignes de cmake -E echo traversent un shell: une apostrophe y ouvre une
chaîne qui ne se referme pas, et un < y est une redirection. Le message de
la cible garde-fou n'a donc ni l'une ni l'autre.

<sub>Filed by prel from the completed plans at commit time.</sub>