Partial answer to soime of your points (most of them being well taken ! ). More later...
Le mardi 16 mai 2023 à 13:45 +0200, Dr. Jürgen Sauermann a écrit : > Hi Emmanue; > > On 5/15/23 23:23, Emmanuel Charpentier wrote: > > > > Dear list, > > after a 37 years (!) hiatus, I have the opportunity to come back to APL. Gnu apl appears to be the easiest way to do that, at least partially due to emacs' gnu-apl-mode package, which appears to be a great interface. > > Thank you very much for your interest in GNU APL. > > > > However, I wondered why the Debian package distributed by Gnu comes without support for libapl.so and lib_gnu_apl.so libraries,which would allow to use APL from other interface. > > > Actually GNU APL has 8 at least primary build options (see the script > **build/build_all** line **309**) : > > configs="standard develop tar git libxcb rational \ > libapl parallel_bench erlang python" > > The most common options are standard (the interpreter) and libapl. > > Each of these options has maybe 10 or so variants which differ > depending on which libraries are installed on the build system. > > And then there are 3 or more packaging systems (debian, rpm, > yum, ...). > > And finally there are different platforms (i386, amd64, arm, apple, ...). > > So in order to be fair we would need to produce several millions of > binary packages. The same is true for most development environments. I'll take the example of R in Debian : There is : - a base package `r-base-core`, which contains the very core of the interpreter ; - the basic interpreter, `r-base`, which uses `r-base-core`, and therefore *depends* on it : - about 138 packages (in Debian testing) depending on `r-base` including various documentation presentation packagings), therefore indirectly depending on `r-base-core` ; - 1121 packages wrapping CRAN R packages, all depending more or less directly from `r-base[-core]?` and possibly other. The dependencies avoid Debian to have to produce `2^159` packages... Furthermore, other packages (e. g. `ess` might `recommend` or `suggest` `R` packages and/or other `R`-related packages. I thought that such a combination could be created for APL packages. That would be : - `gnu-apl-base-core` : essentially `libapl.so`, containing the core of the interpreter ; - gnu-apl-base` : the "vanilla" user interface, essentially emulating a 70's terminal, calling `libapl.so` functions for all the APL computations ; - various `gnu-apl-xxx` wrappers, depending of either `gnu-apl-core` or `gnu-apl-base` and calling (directly or not) `libapl.so` for APL computation, allowing APL to interface with either : + service processors, such as various SQL interface to databases (sqlite3, mysql, postgresql, etc...) + interface to other languages/services (C, Python, erlang, possibly emacs, etc...). Each of them might depend also on distribution-specific packages guatranteeing a known configuration for each of them. For example, `gnu-apl-python` could depend on `gnu-APL-base-core` *and* `python3`, as well as any `python3-xxx` packages providing a useful service. These dependencies avoid the necessity to create a zillion packages representing the various combinations you decsribed. In other words, `gnu-apl-base-core` does *nothing* **by itself** but enables other functionalities *without duplication*. I *suppose* that the same can be done in `rpm` and `yum` packaging systems. [ Hypothetical Debian `gnu-apl` package : Snip... ] > > Furthermore, keeping a *packaged* version of APL makes its maintenance much easier. > Au contraire. It merely moves the work from the user to the > package maintainer, and the work for the maintainer is bigger > than the work for the user. That's the point ;-)... Don't yell too fast : This restructuration is indeed more work (say `W_m`) for *one* (or `n`) maintainer(s), and *less* work (`W_u`) for any of the `N` users. **This is efficient if `W_m/W_u≤N/n`.** In other words, managing these dependencies is worthy if you believe that "easy management" will attract more potential APL users... In (yet) other words, that's an *investment*. This restructuration *might* also have long-term benefits in terms of cleanliness of the code v=base, but I'll refrain to exress any opinion about this : while I'm (relatively) competent enough in C to be able to fix a bung in a lbrary, my C++ is rudimentary to the *extreme*. For about 30 years, I've worked almost exclusively with higher order languages, such as R, perl, bash, and (more recently) Python and [Sage](https://www.sagemath.org/) (throw in enough emacs-lisp to survive heavy daily usage of emacs...), and that's no happenstance... > >So I'm looking for hints and advice on how to recompile and repackage APL for Debian(-like) systems with libraries support (I am aware that this possibly could result in the creation of distinct packages, at least for lib_gnu_apl.so : libapl.so could be part of the main apl package, where the binary apl could be a user front end calling it for computation). > > This should be quite simple: > > 1. ./configure GNU APL to build libapl (see README-2-configure). > 2. make > 3. sudo make install > > This should have created some /usr/local/lib/apl/libapl.* (static > library libapl.a and/or dynamic library libapl.so; the exact names > depend on your platform. > > 4. put the desired libraries into a tar file > 5. convert the tar file into a deb file (e.g. dpkg-buildpackage). > > After all, a **deb** file is simply an **ar** archive that contains a > **tar** > archive and some meta information (**control.tar.zst**, you may > use **debian/*** for a start): > > > **[eedjsa@server68:~/apl-1.8/debian_tmp$](mailto:eedjsa@server68:~/apl-1.8/debian_tmp$) > ar tvf apl_1.8-1_amd64.deb > rw-r--r-- 0/0 4 Jan 4 13:14 2014 debian-binary > rw-r--r-- 0/0 5162 Jan 4 13:14 2014 control.tar.zst > rw-r--r-- 0/0 2973074 Jan 4 13:14 2014 data.tar.zst** I need to experiment with the Debian build package before answering this. > > > Secondary question : it appears that this part of Ubuntu, but not of Debian. Do you know why ? > > See above. Ubuntu is Debian based but also includes non-Debian > packages, Some Ubuntus include GNU APL, some do not. > > > > BTW : I'm not (yet) on the list, so I would appreciate a Cc: [emm.charpent...@free.fr](mailto:emm.charpent...@free.fr) of your (eagerly awaited) replies. > > You only need to subscribe: > > > [https://lists.gnu.org/mailman/listinfo/bug-apl](https://lists.gnu.org/mailman/listinfo/bug-apl) > I'm a special case : since my (almost) homonym, [Emmanuelle Charpentier](https://en.wikipedia.org/wiki/Emmanuelle_Charpentier) was awarded a Nobel prize, my mail feeds (especially the professional ones) are *flooded* with spam. I tend to be extremely cautious about subscribing to mailing lists... Sincerely, --<br> Emmanuel Charpentier