gansm / finalcut

A text-based widget toolkit
https://github.com/gansm/finalcut/wiki/First-steps#first-steps-with-the-final-cut-widget-toolkit
GNU Lesser General Public License v3.0
981 stars 52 forks source link

official debian package #91

Closed alexmyczko closed 2 years ago

alexmyczko commented 2 years ago

Would you mind moving/dropping debian/ so it'd be easier to create an official debian package?

I wasn't able to find an RFP/ITP bug yet, is it possible none was filed yet?

I guess I'll create one, if there's no objections, WIP: http://sid.ethz.ch/debian/finalcut/

gansm commented 2 years ago

I have removed all package build files from the git repository (5c31d07 + 5207af7).

As a Debian user, I would be very happy to see FINAL CUT officially included in the Debian distribution.

gansm commented 2 years ago

Hi Alex, I wanted to ask you if you tried to build Debian packages for the new FINAL CUT version 0.8.0?

alexmyczko commented 2 years ago

Hi thanks for asking and reminding me. will report here with results asap:

Here's my attempts, but it doesn't look good:

http://sid.ethz.ch/debian/finalcut/

gansm commented 2 years ago

When I look at the http://sid.ethz.ch/debian/finalcut/finalcut_0.8.0-1_amd64.build file, the compilation seems to have worked. The problem seems to be the http://sid.ethz.ch/debian/finalcut/finalcut-0.8.0/debian/libfinal0.symbols which is still from version 0.7.1

Please try it with this file symbols.zip

gansm commented 2 years ago

And you should change line

    test -f fonts/fonts.alias && cp fonts/fonts.alias fonts/xfonts-finalcut-newfont.alias || true

to

    test -f final/font/fonts.alias && cp final/font/fonts.alias final/font/xfonts-finalcut-newfont.alias || true

in debian/rules.

The debian/fonts-libfinal.install should have the following content:

final/font/8x16graph.pcf.gz /usr/share/fonts/X11/misc/
final/font/xfonts-finalcut-newfont.alias /etc/X11/fonts/misc/
final/font/40-finalcut-newfont.conf usr/share/fontconfig/conf.avail

And in debian/libfinal-dev.docs and debian/fonts-libfinal.docs you should replace

#fonts/newfont.txt

with

final/font/newfont.txt

.

gansm commented 2 years ago

Hi Alex, I just noticed that you changed the version number from 0.8.0 to 0.8.0-1. In this case the lines in libfinal0.symbols do not match and you have to recreate this file.

rm debian/libfinal0.symbols
dpkg-gensymbols -plibfinal0 -Odebian/libfinal0.symbols
alexmyczko commented 2 years ago

a lot to fix: https://mentors.debian.net/package/finalcut/

gansm commented 2 years ago

All right, let's get started...

The debian/watch file should work fine with:

version=4
opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/finalcut-$1\.tar\.gz/ \
  https://github.com/gansm/finalcut/tags .*/v?(\d\S+)\.tar\.gz

The "useless-autoreconf-build-depends" warning should disappear if you delete the following line

autotools-dev,

in the debian/control file.


The "arch-dependent-file-not-in-arch-specific-directory" error should disappear if you delete the

Multi-Arch: same

line below the

Package: libfinal-examples

line in the debian/control file.


To eliminate the "non-empty-dependency_libs-in-la-file" error, it should be sufficient to remove the

usr/lib/*/lib*.la

line from the debian/libfinal-dev.install file.

gansm commented 2 years ago

The "symbols-file-contains-current-version-with-debian-revision" error should finally disappear if you recreate the debian/libfinal0.symbols file and strip the Debian revision number from it by using the sed command.

rm debian/libfinal0.symbols
dpkg-gensymbols -plibfinal0 -Odebian/libfinal0.symbols
sed -i -e 's/0.8.0-1$/0.8.0/' debian/libfinal0.symbols

To fix the "not-binnmuable-all-depends-any" error, it should be sufficient to replace the following two lines below the line

Package: libfinal-examples

1. Change from

Architecture: all

to

Architecture: any

2. Change from

Depends: libfinal0 (= ${binary:Version}), ${misc:Depends}, libtinfo-dev, libncurses5-dev

to

Depends: libfinal0 (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}

To remove the "link-to-shared-library-in-wrong-package" warning, the line (without trailing asterisk)

usr/lib/*/lib*.so

must be deleted from the file debian/libfinal0.install and inserted into the file debian/libfinal-dev.install.

alexmyczko commented 2 years ago

Do you want to write the RFP: bug? and are you on IRC or element/matrix?

gansm commented 2 years ago

Hi Alex, to be honest, I have no idea what an RFP bug should look like. As a communication channel for FINAL CUT issues, I prefer GitHub to have all information bundled and transparent in one place.

alexmyczko commented 2 years ago

Hi @gansm it's very easy, see the first mail at https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=944202 (this is an example, but send To: is the same and after RFP: finalcut -- short description, and the body the same with fields pretty much like d/control and d/copyright... good luck

gansm commented 2 years ago

Okay, the mail is out. I hope that I could describe the functionality of my project meaningful enough for outsiders.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=998910

By the way: You still have a typo at the top of your debian/libfinal0.symbols file. There it is written libifnal instead of libfinal. (symbols-declares-dependency-on-other-package)

gansm commented 2 years ago

What's the next step?

alexmyczko commented 2 years ago

some last tunings and then upload to the well guarded gate of NEW queue?

https://mentors.debian.net/package/finalcut/ # 10 should appear soon i don't have the .symbols file anymore

uploaded

alexmyczko commented 2 years ago

https://ftp-master.debian.org/new.html

alexmyczko commented 2 years ago

congratulations https://buildd.debian.org/status/package.php?p=finalcut&suite=sid

gansm commented 2 years ago

Oh no! I just see that the m68k architecture only has a pointer alignment of 2 bytes (16 bits).

alignof(char*) == 2

Unfortunately I don't own a m68k Linux VM to analyze this.

gansm commented 2 years ago

I believe FINAL CUT should build on a m68k architecture with this patch: patch.tar.gz

alexmyczko commented 2 years ago

now that it's in debian, ubuntu etc... do you keep a list of software using your library somewhere?

gansm commented 2 years ago

Hi Alex, first of all, thank you very much for your great support. Sorry, I do not have a project list. Not everyone who develops with FINAL CUT tells me that. However, I know that it is used in some companies and in private environments.

FINAL CUT is used for educational purposes as well:

gansm commented 2 years ago

Hi Alex, I just noticed that you removed the binaries from the libfinal-examples_0.8.0-5 package. This violates the original purpose of this package. That package should (similar to gtk2.0-examples) demonstrate the capabilities of this library and give the developer the possibility to understand the implementation in the source code. For each hardware architecture, there should be a separate deb package.

alexmyczko commented 2 years ago

Hi Alex, I just noticed that you removed the binaries from the libfinal-examples_0.8.0-5 package. This violates the original purpose of this package. That package should (similar to gtk2.0-examples) demonstrate the capabilities of this library and give the developer the possibility to understand the implementation in the source code. For each hardware architecture, there should be a separate deb package.

I had the impression the examples are fint by just being sources. As that package is marked all and not any it can not have compiled code that would not run on other architectures. Any developer should be able to just build the examples shipped to run them.

of course it is possible to switch from all to any or put the examples separate from the sources...

gansm commented 2 years ago

You are right! The package should be marked as "any". But I didn't notice it until just now.

gansm commented 2 years ago

Hi Alex, I was just surprised to see that libfinal-dev is missing all the header files from the subdirectories. Without these header files, it is impossible to compile your own application.

These files should be included here:

> find /usr/include/final 
/usr/include/final
/usr/include/final/util
/usr/include/final/util/fpoint.h
/usr/include/final/util/fdata.h
/usr/include/final/util/fstringstream.h
/usr/include/final/util/flogger.h
/usr/include/final/util/fstring.h
/usr/include/final/util/flog.h
/usr/include/final/util/fsize.h
/usr/include/final/util/frect.h
/usr/include/final/util/fcallback.h
/usr/include/final/util/emptyfstring.h
/usr/include/final/util/fsystem.h
/usr/include/final/util/fsystemimpl.h
/usr/include/final/menu
/usr/include/final/menu/fmenulist.h
/usr/include/final/menu/fradiomenuitem.h
/usr/include/final/menu/fmenubar.h
/usr/include/final/menu/fmenuitem.h
/usr/include/final/menu/fdialoglistmenu.h
/usr/include/final/menu/fcheckmenuitem.h
/usr/include/final/menu/fmenu.h
/usr/include/final/ftypes.h
/usr/include/final/fapplication.h
/usr/include/final/fstartoptions.h
/usr/include/final/fwidget_functions.h
/usr/include/final/widget
/usr/include/final/widget/fcombobox.h
/usr/include/final/widget/ftogglebutton.h
/usr/include/final/widget/flabel.h
/usr/include/final/widget/fscrollbar.h
/usr/include/final/widget/fspinbox.h
/usr/include/final/widget/flistview.h
/usr/include/final/widget/fstatusbar.h
/usr/include/final/widget/fbusyindicator.h
/usr/include/final/widget/fradiobutton.h
/usr/include/final/widget/flineedit.h
/usr/include/final/widget/fwindow.h
/usr/include/final/widget/fprogressbar.h
/usr/include/final/widget/flistbox.h
/usr/include/final/widget/fbutton.h
/usr/include/final/widget/fscrollview.h
/usr/include/final/widget/fbuttongroup.h
/usr/include/final/widget/ftooltip.h
/usr/include/final/widget/fswitch.h
/usr/include/final/widget/fcheckbox.h
/usr/include/final/widget/ftextview.h
/usr/include/final/fevent.h
/usr/include/final/final.h
/usr/include/final/dialog
/usr/include/final/dialog/fdialog.h
/usr/include/final/dialog/ffiledialog.h
/usr/include/final/dialog/fmessagebox.h
/usr/include/final/fwidgetcolors.h
/usr/include/final/input
/usr/include/final/input/fmouse.h
/usr/include/final/input/fkey_map.h
/usr/include/final/input/fkeyboard.h
/usr/include/final/vterm
/usr/include/final/vterm/fvterm.h
/usr/include/final/vterm/fstyle.h
/usr/include/final/vterm/fvtermattribute.h
/usr/include/final/vterm/fvtermbuffer.h
/usr/include/final/vterm/fcolorpair.h
/usr/include/final/fconfig.h
/usr/include/final/output
/usr/include/final/output/foutput.h
/usr/include/final/output/tty
/usr/include/final/output/tty/foptimove.h
/usr/include/final/output/tty/ftermoutput.h
/usr/include/final/output/tty/sgr_optimizer.h
/usr/include/final/output/tty/ftermdebugdata.h
/usr/include/final/output/tty/ftermios.h
/usr/include/final/output/tty/ftermopenbsd.h
/usr/include/final/output/tty/fcharmap.h
/usr/include/final/output/tty/ftermdata.h
/usr/include/final/output/tty/ftermcap.h
/usr/include/final/output/tty/fterm.h
/usr/include/final/output/tty/ftermfreebsd.h
/usr/include/final/output/tty/ftermdetection.h
/usr/include/final/output/tty/ftermcapquirks.h
/usr/include/final/output/tty/foptiattr.h
/usr/include/final/output/tty/ftermlinux.h
/usr/include/final/output/tty/ftermxterminal.h
/usr/include/final/output/tty/fterm_functions.h
/usr/include/final/output/fcolorpalette.h
/usr/include/final/fobject.h
/usr/include/final/fc.h
/usr/include/final/fwidget.h
alexmyczko commented 2 years ago

it was always like that (broken) or i just broke it now?

alexmyczko commented 2 years ago

ah the libfinal-dev.install is broken, fixed with -6, should appear shortly

gansm commented 2 years ago

Because you are just editing, can you please change the architecture in libfinal-examples from "all" to "any"?

alexmyczko commented 2 years ago

if someone wants to execute the examples he just runs:

cd /usr/share/doc/libfinal/examples
make -f Makefile.gcc

we can state that in README.Debian ?

Otherwise you're now part of Debian: https://qa.debian.org/developer.php?login=guru.mail%40muenster.de

i don't think the examples for a -dev package (like some others) should be any instead of all and include binaries.

gansm commented 2 years ago

Hi Alex, the examples are primarily intended to demonstrate the capabilities of FINAL CUT. This should also be possible for a user without any programming skills. The ncurses-examples are pretty much the equivalent of that. If you really want to develop with FINAL CUT, you can install libfinal-dev with all dependencies (including the c++ compiler).

alexmyczko commented 2 years ago

i think this can be closed, as the package is packaged now...

alexmyczko commented 1 year ago

will you prepare 0.9.0 deb src package for experimental, or shall i? or we just wait for release and go for unstable/sid?

gansm commented 1 year ago

I would prefer you to take care of this part. I rarely build packages.