bgrabitmap / lazpaint

🎨 Cross-platform image editor with raster and vector layers similar to Paint.Net written in Lazarus (Free Pascal)
https://lazpaint.github.io/
GNU General Public License v3.0
406 stars 57 forks source link

bring lazpaint to debian #18

Closed stavpup closed 4 years ago

stavpup commented 7 years ago

Move closer to make LazPaint as official debian package sometime in the future. So then installation would be as simple as "apt install lazpaint". Also upgrades would be automatic.

circular17 commented 4 years ago

I've told on the RFS bug that the package is more or less ready. It has told me it has sent a copy to package-sponsorship-requests@lists.debian.org so I suppose possible mentors will see.

alexmyczko commented 4 years ago

great but not great... let me review it all again and put up salsa/vcs then on mentors first... i will cc the rfs when done

circular17 commented 4 years ago

I don't understand the subtlety here

alexmyczko commented 4 years ago

what I have done is this:

debsign -k B60A1BF363DC1319FF0A8E89116852BCDF7515C0 lazpaint_6.4.1-1_amd64.changes; dput mentors lazpaint_6.4.1-1_amd64.changes (to upload to mentors.debian.net) see: https://mentors.debian.net/package/lazpaint/

and gbp import-dsc ../5/lazpaint_6.4.1-1.dsc;git push origin master upstream;git push --tags;git push -u origin --all (to upload it to salsa.debian.org) see: https://salsa.debian.org/myczko-guest/lazpaint

circular17 commented 4 years ago

That seems some progress. đź‘Ť

I am not sure I see the point of duplicating the repository on salsa. To have only final version and not editing commits? For this we could use a branch.

I presume I need to do debsign as well on the file I've out on http://johann-elsass.net/debian/lazpaint though do I do it with the same -k parameter? By the way where does this value come from?

alexmyczko commented 4 years ago

don't bother about salsa

the debsign -k is the key identifier for gnupg(pgp)... you need your own key

circular17 commented 4 years ago

Ok I have created a key and sent it to the server following this tutorial: https://wiki.debian.org/Keysigning#Step_1:_Create_a_RSA_keypair

Then did debsign and dput, and apparently it was successful. https://mentors.debian.net/package/lazpaint/

I have updated the files on my server. http://johann-elsass.net/debian/lazpaint/

Shall I mention this on RFS or ITP bug?

alexmyczko commented 4 years ago

uhm, i think the upload on mentors is from me. i'm not sure if we want to kill some more lintian messages before you mention it on RFS (not ITP), i'd like to really check debian/copyright once more, it will be reviewed by a sponsor who potentially will take the RFS and upload it, which then later gets reviewed by the Debian FTP Master (or team members), and the slightest problem will result in a REJECT (that being resource waste), let's just look at d/copyright once more

https://wiki.debian.org/CopyrightReviewTools

circular17 commented 4 years ago

uhm, i think the upload on mentors is from me.

What do you mean?

i'd like to really check debian/copyright once more, it will be reviewed by a sponsor who potentially will take the RFS and upload it, which then later gets reviewed by the Debian FTP Master (or team members), and the slightest problem will result in a REJECT (that being resource waste), let's just look at d/copyright once more

Ok

alexmyczko commented 4 years ago

https://mentors.debian.net/package/lazpaint/ shows me it was uploaded by me, but dunno how did you upload it? using the dput command? given above? and the result/output said what?

circular17 commented 4 years ago

I used dput as you suggested. It seemed work. But I received an e-mail saying it was rejected because of the key.

Unable to verify file lazpaint_6.4.1-1_amd64.changes. No public key found for key
BA50BFF0CC74EBBC9596E63746CEE8AA9C552776

Maybe I should not have used the full key to sign?

alexmyczko commented 4 years ago

maybe just add it here? https://mentors.debian.net/accounts/profile/

circular17 commented 4 years ago

I created an account and added it to my profile. In the e-mail it says to send the package again, but if I try it tells me it has already been sent.

circular17 commented 4 years ago

Looking at the copyrights, I guess there are more names in the source code. I tried the licensecheck but that gives me a lot of non sensical result. I may be better off using grep.

alexmyczko commented 4 years ago

I created an account and added it to my profile. In the e-mail it says to send the package again, but if I try it tells me it has already been sent.

dput creates a file *upload delete it first then try again dput

circular17 commented 4 years ago

Ah indeed I deleted lazpaint_6.4.1-1_amd64.mentors.upload and now it can upload again.

Checking signature on .changes
gpg: /home/johann/upstream/lazpaint_6.4.1-1_amd64.changes: Valid signature from 46CEE8AA9C552776
Checking signature on .dsc
gpg: /home/johann/upstream/lazpaint_6.4.1-1.dsc: Valid signature from 46CEE8AA9C552776
Uploading to mentors (via ftp to mentors.debian.net):
  Uploading lazpaint_6.4.1-1.dsc: done.
  Uploading lazpaint_6.4.1.orig.tar.gz: done.      
  Uploading lazpaint_6.4.1-1.debian.tar.xz: done.
  Uploading lazpaint_6.4.1-1_amd64.buildinfo: done.  
  Uploading lazpaint_6.4.1-1_amd64.deb: done.      
  Uploading lazpaint_6.4.1-1_amd64.changes: done.
Successfully uploaded packages.
circular17 commented 4 years ago

I received an e-mail saying upload was successful.

I will check remaining copyright notices in the code.

circular17 commented 4 years ago

I deleted my upload and updated my upstream repository.

Though I cannot build it with Linux Mint because it has debhelper version 12.

I will try with Ubuntu 20.10.

circular17 commented 4 years ago

I built successfully using debhelper 13, uploaded to mentors and updated my online folder.

There are still some warnings, but well, nothing too bad I suppose.

What I see that remains that I suppose I can fix is:

alexmyczko commented 4 years ago

Yes and these (2 of them) should be also fairly easy to fix:

alexmyczko commented 4 years ago

I deleted my upload and updated my upstream repository.

Though I cannot build it with Linux Mint because it has debhelper version 12.

For that just make it 11 in debian/control .. new packages get into Debian unstable/sid (sometimes experimental), and then Ubuntu, Devuan, Raspbian, Mint whatever not automatically sync the version from Debian (when not in freeze)

I will try with Ubuntu 20.10.

alexmyczko commented 4 years ago

I have some notes about licensecheck usage:

licensecheck -r .
licensecheck -r *
licensecheck -r .|cut -d: -f2-|sort|uniq -c
circular17 commented 4 years ago

Yes and these (2 of them) should be also fairly easy to fix:

  • spelling-error-in-binary

Nope, that's not in my code, I presume it is in the LCL or FPC framework.

I guess I fixed all the errors we mentioned. See upload 5: https://mentors.debian.net/package/lazpaint/

What to do now?

alexmyczko commented 4 years ago

I don't know yet, but I just tried lazpaint again, and running ldd /usr/bin/lazpaint this one jumps in my eye: libgtk2.0-0:amd64: /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0

and this: https://lists.debian.org/debian-devel/2018/11/msg00570.html

do you or lazpaint/fpc software building/running against qt5?

circular17 commented 4 years ago

As far as I know, Lazarus does not handle gtk3.

It can make applications for Qt5, though I never used it because of the overhead of the installation of Qt5 on Windows. Is Qt5 included by default in newer Debian distributions?

alexmyczko commented 4 years ago

no but neither is gtk :) and qt5 looks much better. gtk3/4 are now gtk2 tried being removed.

fredvs commented 4 years ago

In original Debian Xfce distro, only gtk2 is installed by default. The same for Raspian.

There is the option to migrate LazPaint to use a universal direct Xorg widget-set but this is a other story.

;-)

circular17 commented 4 years ago

@alexmyczko I thought you were implying Qt would be a replacement for Gtk. That would be possible if Qt was installed by default. But I just checked on Ubuntu and it doesn't seem Qt packages are installed.

Now if you meant about supporting Qt, well why not. Though how do we do at the level of lazpaint package? Some virtual package or something?

There are some plans and experiments for Gtk3 with Lazarus but I have no idea of the progress of that. The widget is not available in Lazarus 2.0.10 as far as I can see. https://forum.lazarus.freepascal.org/index.php/topic,12126.0.html

fredvs commented 4 years ago

but this is a other story.

And you would be impressed how easy and fast was the migration.

OK, ok, je sors.

alexmyczko commented 4 years ago

what gui does macos lazarus use? cocoa or something else? if it is cocoa it should be not too hard to make a gnustep version, that would be lazarus.app hehe yeah i would like to try a qt5 build can you help me how/what to do?

fredvs commented 4 years ago

i would like to try a qt5 build

You should only set the widget-set to use as "Qt5"

Capture d’écran_2020-10-21_21-08-06

And recompile LazPaint.

circular17 commented 4 years ago

Yes, Cocoa for 64-bit MacOS and Carbon for 32-bit MacOS. Oh I didn't know about Gnustep, well sure that could be another way :D

Yeah building for Qt5 is more or less choosing Qt5 from the list and maybe install some packages for building. Now there may be some performance issue, I have not optimized it particularly.

alexmyczko commented 4 years ago

@fredvs @circular17 I've found this: https://wiki.lazarus.freepascal.org/Qt5_Interface#Why_Qt5_instead_of_GTK_.3F

and tried: export LCL_PLATFORM=qt5 # added to debian/rules and also added (Makefile):

-   lazbuild lazpaint/lazpaint.lpi
+   lazbuild --ws=qt5 lazpaint/lazpaint.lpi

also needs in debian/control: Build-Depens: additionally lcl-qt5

ldd /usr/bin/lazpaint|grep gtk no more gtk there :)

but with remote x it looks like something is broken: lazpaint-qt

also happens locally and killed my xsession

So I took your latest debian/ throw it at lazpaint 7.1.4 and tried to build and it'd fail. New packages always go into Debian sid (also known as unstable) with the latest and bestest software. What would be needed to get your packaging to work with 7.1.4?

fredvs commented 4 years ago

Hello.

May I ask you what do you find more beautiful with QT vs GTK ?

This because nearly all the objects used by LazPaint are "custom" objects and you will not see any difference with QT vs GTK.

alexmyczko commented 4 years ago

I can clearly see a menu system difference. And qt jas qt5ct where one can easily set default font for all qt applications.

Also possible with gtk but having gtk2, gtk3, gtk4 at the same time makes it cumbersome. besides gtk2 is end of life.

fredvs commented 4 years ago

Hello.

OK, for the menu system difference.

I have to admit too, when I developed applications with LCL (Lazarus components) that for audio applications the latency was much better with Qt vs GTK: https://sites.google.com/site/fiensprototyping/

But there are some "bémol". You have to install libqt4pas-dev that is not provided by default in many distros. So no way to have a "out-of-the-box" install.

And for audio latency, MSEgui or fpGUI are far much better than LCL (but this also is a other story).

Fre;D

fredvs commented 4 years ago

besides gtk2 is end of life.

Like the death of X11/Xorg that was announced 15 years ago and will replaced with Wayland. Afaik, X11 is still there, used by the most distros.

But you are right, GTK2 is at end of life (and that end, like for X11, is endless).

alexmyczko commented 4 years ago

I have to admit too, when I developed applications with LCL (Lazarus components) that for audio applications the latency was much better with Qt vs GTK:

ok but irrelevant for lazpaint

But there are some "bémol". You have to install libqt4pas-dev that is not provided by default in many distros. So no way to have a "out-of-the-box" install.

having and using a debian system right, one would install it with apt install lazpaint, and that would pull required deps automatically. and to build libqt5pas-dev is probably pulled in (need to look in the build log) how is that important? developer can still provide own deb with gtk, once gtk3 is working with lazpaint, the source package can build multiple binaries say lazpaint-qt and lazpaint-gtk, heck even lazpaint.app (with gnustep). all debian based systems have libqt5pas-dev (or 4, is not anymore since qt4 is eol)

And for audio latency, MSEgui or fpGUI are far much better than LCL (but this also is a other story).

i don't know, this is my first debian package with freepascal... one can always try to use different build tool chains for packages.

fredvs commented 4 years ago

@alexmyczko : All that said, I would be very happy to try LazPaint compiled with Qt5.

The big advantage is that Qt5 can deal with Wayland.

But I did try to compile and run LazPaint with Qt5 without luck, so if you can: nice.

alexmyczko commented 4 years ago

@fredvs can you install that? http://phd-sid.ethz.ch/debian/lazpaint/5/lazpaint_6.4.1-1_amd64.deb if not, tell me why, and what lsb_release -d tells you

fredvs commented 4 years ago

Hello.

Capture d’écran_2020-10-22_13-27-09

Translated: error: a more recent version is already installed.

What must I do first?

fredvs commented 4 years ago

fred@fiens ~> lsb_release -d Description: Debian GNU/Linux 10 (buster)

alexmyczko commented 4 years ago

first remove the more recent version, dpkg -P lazpaint (you can run that as root in a terminal/shell), then install the one i gave you :)

fredvs commented 4 years ago

fred@fiens ~> sudo dpkg -P lazpaint [sudo] Mot de passe de fred :  (Lecture de la base de données... 233060 fichiers et répertoires déjà installés.) Suppression de lazpaint (7.1.3) ... Traitement des actions différées (« triggers ») pour man-db (2.8.5-2) ... Traitement des actions différées (« triggers ») pour desktop-file-utils (0.23-4) ... Traitement des actions différées (« triggers ») pour mime-support (3.62) ...

OK, uninstalled. Now install:

sudo dpkg -i /home/fred/Downloads/lazpaint_6.4.1-1_amd64.deb Sélection du paquet lazpaint précédemment désélectionné. (Lecture de la base de données... 232963 fichiers et répertoires déjà installés.) Préparation du dépaquetage de .../lazpaint_6.4.1-1_amd64.deb ... Dépaquetage de lazpaint (6.4.1-1) ... dpkg: des problèmes de dépendances empêchent la configuration de lazpaint : lazpaint dépend de libqt5pas1 (>= 2.6~beta-1) ; cependant : Le paquet libqt5pas1 n'est pas installé.

dpkg: erreur de traitement du paquet lazpaint (--install) : problèmes de dépendances - laissé non configuré Traitement des actions différées (« triggers ») pour desktop-file-utils (0.23-4) ... Traitement des actions différées (« triggers ») pour mime-support (3.62) ... Traitement des actions différées (« triggers ») pour hicolor-icon-theme (0.17-2) ... Traitement des actions différées (« triggers ») pour man-db (2.8.5-2) ... Des erreurs ont été rencontrées pendant l'exécution : lazpaint

So it say : libqt5pas1 is not installed.

fred@fiens ~> sudo apt install libqt5pas1 Lecture des listes de paquets... Fait Construction de l'arbre des dépendances
Lecture des informations d'état... Fait Vous pouvez lancer « apt --fix-broken install » pour corriger ces problèmes. Les paquets suivants contiennent des dépendances non satisfaites : libqt5pas1 : Dépend: libqt5printsupport5 (>= 5.3.0) mais ne sera pas installé E: Dépendances non satisfaites. Essayez « apt --fix-broken install » sans paquet (ou indiquez une solution).

It say that some dependences are not OK.

You may see that this not out-of-the-box.

fredvs commented 4 years ago

OK, next battle:

fred@fiens ~> sudo apt --fix-broken install bla, bla, bla... ... OK, fixed.

fred@fiens ~> sudo apt install libqt5pas1 OK, installed.

fred@fiens ~> sudo dpkg -i /home/fred/Downloads/lazpaint_6.4.1-1_amd64.deb (Lecture de la base de données... 233033 fichiers et répertoires déjà installés.) Préparation du dépaquetage de .../lazpaint_6.4.1-1_amd64.deb ... Dépaquetage de lazpaint (6.4.1-1) sur (6.4.1-1) ... Paramétrage de lazpaint (6.4.1-1) ... Traitement des actions différées (« triggers ») pour desktop-file-utils (0.23-4) ... Traitement des actions différées (« triggers ») pour mime-support (3.62) ... Traitement des actions différées (« triggers ») pour hicolor-icon-theme (0.17-2) ... Traitement des actions différées (« triggers ») pour man-db (2.8.5-2) ... fred@fiens ~>

Hum, OK, seems installed.

fred@fiens ~> lazpaint lazpaint: error while loading shared libraries: libQt5Pas.so.1: wrong ELF class: ELFCLASS32

;-(

fredvs commented 4 years ago

OK, end of battle.

Needed to manually remove libQt5Pas.so.1 and reinstall it.

So, ok, installed but...

See picture:

Capture d’écran_2020-10-22_13-59-20

alexmyczko commented 4 years ago

looks similar to mine some internal image format problem? @circular17 ?

fredvs commented 4 years ago

looks similar to mine some internal image format problem?

And that will be very difficult to fix because LCL-Qt5 is not already totally ready and this is really a other story. By the way you are welcome to jump into it...

;-)

fredvs commented 4 years ago

I did try to compile LazPaint trunk using Qt5 with last version of Lazarus and...

Capture d’écran_2020-10-22_14-32-38

For me no problem, see picture:

Capture d’écran_2020-10-22_14-28-26

fredvs commented 4 years ago

Re-hello.

Here binary of lazpaint-7.1.5 compiled with Qt5 for Linux 64:

lazpaint.zip

But yes, there are here problems with windows moving.