pantoniou / libfyaml

Fully feature complete YAML parser and emitter, supporting the latest YAML spec and passing the full YAML testsuite.
MIT License
241 stars 74 forks source link

Debian-friendly releases #46

Closed jlblancoc closed 2 years ago

jlblancoc commented 2 years ago

Hi @pantoniou ,

Just a kind note: please check this section on why /debian shouldn't appear in released tar balls...

pantoniou commented 2 years ago

Hmm, interesting, didn't know about that.

I'll make a release on Monday removing the debian directory on the release tarballs.

I would like to keep whatever the upstream debian directory contents are in the repo though; I really like doing a make deb and having a working deb from source...

jlblancoc commented 2 years ago

Sure, no problem with keeping it.

Thanks! It will be super useful. Yesterday I tried making an updated Debian release and there were many problems due to the already existing d directory. I'll work on the next release and come back to you when they're news.

Thanks again!

pantoniou commented 2 years ago

Just made a v0.7.3

It was too much of a hassle to keep the debian directory in source control and remove it at dist time. I'll wait until the package lands in debian and then I'll see what I can do.

Verify if it solves your issue, and if so, close this please.

jlblancoc commented 2 years ago

Ok, thanks!

That allowed me to make great progress. I attach (as a backup and for your reference) the contents of the debian/ directory, after fixing tons of minor issues (outdated standards, etc.).

debian.zip

That allows one to do:

mkdir temp && cd temp
wget https://github.com/pantoniou/libfyaml/releases/download/v0.7.3/libfyaml-0.7.3.tar.gz
mv libfyaml-0.7.3.tar.gz libfyaml_0.7.3.orig.tar.gz
cd libfyaml*
unzip /path/to/debian.zip  # the attachment here

# build source package
debuild -S -sa -d

# build in an isolated env:
cd ..
sudo pbuilder --build --distribution unstable --architecture amd64 --basetgz /var/cache/pbuilder/sid-amd64-base.tgz --mirror http://ftp.us.debian.org/debian/ *.dsc

# checks:
cd /var/cache/pbuilder/result
lintian -I *.deb

which, so far, still produces these errors and warnings, which will be not acceptable for Debian mentors:

$ lintian -I *.deb
E: libfyaml-utils: arch-dependent-file-not-in-arch-specific-directory usr/bin/fy-tool
E: libfyaml-utils: missing-dependency-on-libc needed by usr/bin/fy-tool
W: libfyaml-utils: binary-without-manpage usr/bin/fy-compose
W: libfyaml-utils: binary-without-manpage usr/bin/fy-dump
W: libfyaml-utils: binary-without-manpage usr/bin/fy-filter
W: libfyaml-utils: binary-without-manpage ... use --no-tag-display-limit to see all (or pipe to a file/program)
W: libfyaml-0.7: debian-changelog-has-wrong-day-of-week 2021-10-16 is a Saturday
W: libfyaml-dev: debian-changelog-has-wrong-day-of-week 2021-10-16 is a Saturday
W: libfyaml-utils: debian-changelog-has-wrong-day-of-week 2021-10-16 is a Saturday
W: libfyaml-0.7: new-package-should-close-itp-bug
W: libfyaml-dev: new-package-should-close-itp-bug
W: libfyaml-utils: new-package-should-close-itp-bug
W: libfyaml-0.7: package-name-doesnt-match-sonames libfyaml-0.7-0
I: libfyaml-0.7: description-synopsis-might-not-be-phrased-properly "Fully feature complete YAML parser and emitter."
I: libfyaml-dev: description-synopsis-might-not-be-phrased-properly "Fully feature complete YAML parser and emitter."
I: libfyaml-utils: description-synopsis-might-not-be-phrased-properly "Fully feature complete YAML parser and emitter."
I: libfyaml-0.7: hardening-no-bindnow usr/lib/x86_64-linux-gnu/libfyaml-0.7.so.0.0.0
I: libfyaml-utils: hardening-no-bindnow usr/bin/fy-tool
I: libfyaml-0.7: no-symbols-control-file usr/lib/x86_64-linux-gnu/libfyaml-0.7.so.0.0.0
I: libfyaml-0.7: spelling-error-in-binary usr/lib/x86_64-linux-gnu/libfyaml-0.7.so.0.0.0 expresion expression
I: libfyaml-0.7: spelling-error-in-binary usr/lib/x86_64-linux-gnu/libfyaml-0.7.so.0.0.0 indendation indentation
I: libfyaml-0.7: spelling-error-in-binary usr/lib/x86_64-linux-gnu/libfyaml-0.7.so.0.0.0 seperator separator
I: libfyaml-utils: spelling-error-in-binary usr/bin/fy-tool expresion expression

We can work on debian/patches until a version got into Debian, then when everything looks OK, you could integrate those patches upstream, ok?

"I" messages are not critical, but "W" and "E" must be addressed for a package to be accepted.

Cheers!

jlblancoc commented 2 years ago

A bit closer with: debian.zip

$ lintian -I *.deb

E: libfyaml-utils: arch-dependent-file-not-in-arch-specific-directory usr/bin/fy-tool
W: libfyaml-utils: binary-without-manpage usr/bin/fy-compose
W: libfyaml-utils: binary-without-manpage usr/bin/fy-dump
W: libfyaml-utils: binary-without-manpage usr/bin/fy-filter
W: libfyaml-utils: binary-without-manpage ... use --no-tag-display-limit to see all (or pipe to a file/program)
W: libfyaml-0.7: package-name-doesnt-match-sonames libfyaml-0.7-0
I: libfyaml-0.7: description-synopsis-might-not-be-phrased-properly "Fully feature complete YAML parser and emitter."
I: libfyaml-dev: description-synopsis-might-not-be-phrased-properly "Fully feature complete YAML parser and emitter."
I: libfyaml-utils: description-synopsis-might-not-be-phrased-properly "Fully feature complete YAML parser and emitter."
I: libfyaml-0.7: hardening-no-bindnow usr/lib/x86_64-linux-gnu/libfyaml-0.7.so.0.0.0
I: libfyaml-utils: hardening-no-bindnow usr/bin/fy-tool
I: libfyaml-0.7: no-symbols-control-file usr/lib/x86_64-linux-gnu/libfyaml-0.7.so.0.0.0
I: libfyaml-0.7: spelling-error-in-binary usr/lib/x86_64-linux-gnu/libfyaml-0.7.so.0.0.0 expresion expression
I: libfyaml-0.7: spelling-error-in-binary usr/lib/x86_64-linux-gnu/libfyaml-0.7.so.0.0.0 indendation indentation
I: libfyaml-0.7: spelling-error-in-binary usr/lib/x86_64-linux-gnu/libfyaml-0.7.so.0.0.0 seperator separator
I: libfyaml-utils: spelling-error-in-binary usr/bin/fy-tool expresion expression
pantoniou commented 2 years ago

Great progress!

I will take a look and see what I can fix; some of the errors are obvious.

Are the I errors mandatory to be fixed or now btw?

jlblancoc commented 2 years ago

Lintian errors and warnings are mandatory to be fixed, yes... the "I" messages are not, but typos, etc. are easy to fix anyhow.

JL

jlblancoc commented 2 years ago

I created a gbp repo here: https://github.com/MRPT/libfyaml-gbp so it's easier to test with:

git clone https://github.com/MRPT/libfyaml-gbp
cd libfyaml-gbp

Then:

# Option 1) build locally:
gbp buildpackage -d

or:

# build in a pbuilder:
gbp buildpackage -S -sa -d
# build in an isolated env:
cd ..
sudo pbuilder --build --distribution unstable --architecture amd64 --basetgz /var/cache/pbuilder/sid-amd64-base.tgz --mirror http://ftp.us.debian.org/debian/ *.dsc

# checks:
cd /var/cache/pbuilder/result
lintian -I *.deb
jlblancoc commented 2 years ago

@pantoniou I'm not able to generate the man pages under doc/man... They are very well elaborated, it seems there must be a way to build them into nice real man pages... It looks like the checks in "configure" always report "have_sphinx = 0" in my system, despite having sphinx-builder, etc. Any hint on what may be wrong?

BTW: I already fixed the only lintian error, let's fix the warnings and submit it!

jlblancoc commented 2 years ago

Another issue which requires changing the autotools files (and I'm not as familiar with them to do it straight away...) is the naming of the ".so" file and symlinks:

Now it's:

How I think it should be (it will fix the remaining lintian warning):

With cmake there are options to generate all these names and symlinks automatically, but I'm unsure how to create them with autotools...

pantoniou commented 2 years ago

Awesome!

Thanks for taking the time to do this. I really appreciate it...

I will try to address all the issues and issue a new release over the weekend ($DAYJOB has not been giving me much leeway the past few days).

Thank you again!

jlblancoc commented 2 years ago

Thank you! I think it's worth having your library at one "apt install" of distance ;-)

perlpunk commented 2 years ago

a bit offtopic for the tiltle, but I'm also working on a package for openSUSE: https://build.opensuse.org/package/show/home:tinita:branches:devel:libraries:c_c++/libfyaml

jlblancoc commented 2 years ago

a bit offtopic for the tiltle, but I'm also working on a package for openSUSE: https://build.opensuse.org/package/show/home:tinita:branches:devel:libraries:c_c++/libfyaml

Awesome! Why are those builds failing? I'm not familiar with the opensuse way of packaging, but auto tools should be supported straight away ....

perlpunk commented 2 years ago

@jlblancoc they are only failing for an older SLE version, that I don't have to support :)

pantoniou commented 2 years ago

Release v0.7.9 is out. Can I get a list of what's broken so that we can get a debian package out for 0.8.0?

jlblancoc commented 2 years ago

Hi!

On my side, when the deb package is built, (make + make install) one has:

debian/tmp/
debian/tmp/usr
debian/tmp/usr/bin
debian/tmp/usr/bin/fy-filter
debian/tmp/usr/bin/fy-join
debian/tmp/usr/bin/fy-tool
debian/tmp/usr/bin/fy-testsuite
debian/tmp/usr/bin/fy-dump
debian/tmp/usr/bin/fy-ypath
debian/tmp/usr/bin/fy-compose
debian/tmp/usr/include
debian/tmp/usr/include/libfyaml.h
debian/tmp/usr/lib
debian/tmp/usr/lib/x86_64-linux-gnu
debian/tmp/usr/lib/x86_64-linux-gnu/pkgconfig
debian/tmp/usr/lib/x86_64-linux-gnu/pkgconfig/libfyaml.pc
debian/tmp/usr/lib/x86_64-linux-gnu/libfyaml.a
debian/tmp/usr/lib/x86_64-linux-gnu/libfyaml.la
debian/tmp/usr/lib/x86_64-linux-gnu/libfyaml-0.7.9.so
debian/tmp/usr/lib/x86_64-linux-gnu/libfyaml.so

We would need:

Thanks.

pantoniou commented 2 years ago

Just pushed v0.7.10, which should fix the last two debian packaging problems.

libfyaml-0.7.9.so was a bad idea (using libtool's -release option). The correct thing to do is to switch to -version and support libtool's ABI versioning (which differs from what's the API version - the human readable semantic versioning one).

You can read the details at https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html#Updating-version-info

For the second part, I just ship canned version of the man-page (and install symlinks) as appropriate.

Unfortunately, v0.7.10 broke distcheck so v0.7.11 will be coming soon :)

pantoniou commented 2 years ago

v0.7.11 is out, let me know if it fixes anything at all...

jlblancoc commented 2 years ago

For the records: It seems the last version was good enough, thanks!

We managed to get it uploaded to Debian (pkg details), but since it's the first time it has to go thru the "NEW queue", so it's waiting there until it's approved for definitive inclusion. After that, you would be able to see its page under: https://tracker.debian.org/pkg/libfyaml

pantoniou commented 2 years ago

Excellent news

Thanks for your efforts Jose.

jlblancoc commented 2 years ago

https://tracker.debian.org/pkg/libfyaml

It's on!