On 2024-03-30 12:38 +0100, Santiago Vila wrote:

> El 30/3/24 a las 9:43, Sven Joachim escribió:
>> I think it would make sense for Debian to follow what Arch and Fedora
>> are doing, introduce a libdialog15 package with the shared library and a
>> libdialog-dev package with the .so symlink but without libdialog.a,
>> because that requires (if I understood you correctly) configuring and
>> building dialog twice, greatly complicating packaging.
>> Santiago, do you think this is a good plan?
>
> Yes. If we can avoid the static library to keep it simple, that would be 
> better.
>
> Simple question: Is that really allowed these days? I wanted to be sure
> by reading Policy but did not find any statement saying they are required
> or not.

I could only find the following two sentences in §8.3:

,----
| The static library ("libraryname.a") is usually provided in addition
| to the shared version. It is placed into the development package (see
| below).
`----

So shipping static libraries is recommended but not required, and there
are certainly quite a few packages where upstream does not support them.
But see below.

>> I can work on an updated patch.
>
> That would definitely help.

This afternoon I got my hands dirty.  The first attempt to simply pass
--with-shared to configure failed to give me a libdialog.a, and it also
produced the following odd collection of *.so* files:

libdialog.so -> libdialog.so.15.0.0
libdialog.so.1.3
libdialog.so.15.0.0 -> libdialog.so.1.3

Not what you would expect, and it does not match the files shipped in
the Fedora and Arch packages.  A closer look revealed that they both
configure dialog --with-libtool, and that worked great because it gave
me not only the expected layout of *.so* files, but also a static
libdialog.a library. :-)

Patch attached, I have tested that it builds on amd64 and i386. looked
at the generated Dependencies and verified that lintian does not go
crazy, but that's it.  Note that I had to add libtool-bin rather than
just libtool to Build-Depends to prevent configure from complaining, and
also pacify dh_missing considering the not installed .la file.

There are certainly a few improvements possible (e.g. adding a symbols
file, testing R³ support), I leave this up to you.

Cheers,
       Sven

diff -Nru dialog-1.3-20240101/debian/changelog dialog-1.3-20240101/debian/changelog
--- dialog-1.3-20240101/debian/changelog	2024-01-23 18:05:00.000000000 +0100
+++ dialog-1.3-20240101/debian/changelog	2024-03-30 19:21:27.000000000 +0100
@@ -1,3 +1,11 @@
+dialog (1.3-20240101-2) UNRELEASED; urgency=medium
+
+  * Split out libdialog-dev into its own package. Closes: #1012325.
+  * Build a shared library.
+  * Add libtool-bin to Build-Depends.
+
+ -- Sven Joachim <svenj...@gmx.de>  Sat, 30 Mar 2024 19:21:27 +0100
+
 dialog (1.3-20240101-1) unstable; urgency=medium

   * New upstream release.
diff -Nru dialog-1.3-20240101/debian/control dialog-1.3-20240101/debian/control
--- dialog-1.3-20240101/debian/control	2024-01-23 17:00:00.000000000 +0100
+++ dialog-1.3-20240101/debian/control	2024-03-30 19:21:27.000000000 +0100
@@ -3,13 +3,12 @@
 Priority: optional
 Maintainer: Santiago Vila <sanv...@debian.org>
 Standards-Version: 4.6.2
-Build-Depends: debhelper-compat (= 13), gettext, libncurses-dev (>= 5.3)
+Build-Depends: debhelper-compat (= 13), gettext, libncurses-dev (>= 5.3), libtool-bin
 Homepage: https://invisible-island.net/dialog/dialog.html

 Package: dialog
 Architecture: any
 Depends: debianutils (>= 1.6), ${misc:Depends}, ${shlibs:Depends}
-Provides: libdialog-dev
 Multi-Arch: foreign
 Description: Displays user-friendly dialog boxes from shell scripts
  This application provides a method of displaying several different types
@@ -29,3 +28,29 @@
   tail             Allows viewing the end of files (tail) that auto updates
   background tail  Similar to tail but runs in the background.
   editbox          Allows editing an existing file
+
+Package: libdialog15
+Architecture: any
+Section: libs
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Multi-Arch: same
+Description: Displays user-friendly dialog boxes -- shared library
+ The dialog application provides a method of displaying several different
+ types of dialog boxes from shell scripts.  This allows a developer of a
+ script to interact with the user in a much friendlier manner.
+ .
+ This package contains the shared library.
+
+Package: libdialog-dev
+Architecture: any
+Section: libdevel
+Depends: ${misc:Depends}, libdialog15 (= ${binary:Version}), libncurses-dev
+Multi-Arch: same
+Replaces: dialog (<< 1.3-20240101-2~)
+Breaks: dialog (<< 1.3-20240101-2~)
+Description: Displays user-friendly dialog boxes -- development files
+ The dialog application provides a method of displaying several different
+ types of dialog boxes from shell scripts.  This allows a developer of a
+ script to interact with the user in a much friendlier manner.
+ .
+ This package contains the development files and the API documentation.
diff -Nru dialog-1.3-20240101/debian/dialog.install dialog-1.3-20240101/debian/dialog.install
--- dialog-1.3-20240101/debian/dialog.install	2024-01-23 17:00:00.000000000 +0100
+++ dialog-1.3-20240101/debian/dialog.install	2024-03-30 17:15:33.000000000 +0100
@@ -1 +1,4 @@
 dialog.pl usr/share/perl5
+usr/bin
+usr/share/locale
+usr/share/man/man1
diff -Nru dialog-1.3-20240101/debian/libdialog-dev.install dialog-1.3-20240101/debian/libdialog-dev.install
--- dialog-1.3-20240101/debian/libdialog-dev.install	1970-01-01 01:00:00.000000000 +0100
+++ dialog-1.3-20240101/debian/libdialog-dev.install	2024-03-30 17:57:12.000000000 +0100
@@ -0,0 +1,4 @@
+usr/include
+usr/lib/*/libdialog.so
+usr/lib/*/libdialog.a
+usr/share/man/man3
diff -Nru dialog-1.3-20240101/debian/libdialog15.install dialog-1.3-20240101/debian/libdialog15.install
--- dialog-1.3-20240101/debian/libdialog15.install	1970-01-01 01:00:00.000000000 +0100
+++ dialog-1.3-20240101/debian/libdialog15.install	2024-03-30 17:34:20.000000000 +0100
@@ -0,0 +1 @@
+usr/lib/*/libdialog.so.15*
diff -Nru dialog-1.3-20240101/debian/not-installed dialog-1.3-20240101/debian/not-installed
--- dialog-1.3-20240101/debian/not-installed	1970-01-01 01:00:00.000000000 +0100
+++ dialog-1.3-20240101/debian/not-installed	2024-03-30 18:16:06.000000000 +0100
@@ -0,0 +1 @@
+usr/lib/*/libdialog.la
diff -Nru dialog-1.3-20240101/debian/rules dialog-1.3-20240101/debian/rules
--- dialog-1.3-20240101/debian/rules	2024-01-23 17:00:00.000000000 +0100
+++ dialog-1.3-20240101/debian/rules	2024-03-30 17:35:35.000000000 +0100
@@ -5,7 +5,8 @@
 override_dh_autoreconf:

 override_dh_auto_configure:
-	dh_auto_configure -- --prefix=/usr --enable-nls --with-ncursesw --disable-rpath-hack
+	dh_auto_configure -- --prefix=/usr --enable-nls --with-ncursesw \
+			     --with-shared --with-libtool --disable-rpath-hack

 override_dh_auto_install:
 	dh_auto_install -- install install-lib

Reply via email to