Hello OCaml packagers!
There is now a COPR repo showing off what the new OCaml macros can do:
https://copr.fedorainfracloud.org/coprs/jjames/Infer/
Yes, that's the same COPR repo I just mentioned on fedora-devel-list. I'm interested in feedback. Things to note:
1. I basically did a full review on each package. This has taken a few months. In the process, I have identified lots of incorrect License tags and found other ways the spec files could be improved or simplified. If your OCaml package isn't in the COPR repo, that means I didn't see anything in the spec file that ought to be changed.
2. I've abandoned the use of odoc to build documentation. Richard Jones pointed out that odoc has been a big source of dependency loops, for one thing. For another, we can't really take advantage of odoc's crosslinking capabilities without doing bootstrap builds for dozens of packages until we can build odoc, then building everything a second time to generate the documentation. Finally, the documentation is generally available online anyway. Does anybody object to discarding the odoc-generated documentation?
3. I've moved away from using %srcname or %libname macros. As Miro has been pointing out on fedora-devel-list for some time, those macros seem to obscure more than they help.
4. If you want to see how all of these OCaml packages are related to each other, take a look at one of these:
https://jamezone.org/pleasure/software/Fedora/infer.dot https://jamezone.org/pleasure/software/Fedora/infer.pdf
This graph shows the "build before" order. That is, if there is an arrow from A to B, then A must be built before B.
Legend: Black node: package is in Fedora Green node: package has been submitted for review Red node: package is not in Fedora
Solid black line: Mandatory build requirement Dashed black line: Optional build requirement Solid blue line: Test requirement Solid green line: Documentation requirement
5. Packages that are no longer used after the changes in the repo are made. We can retire these unless someone has another need for them: - ocaml-migrate-parsetree - ocaml-seq - ocaml-uuidm
6. Many leaf packages contain useful binaries in their own right, or are used by non-OCaml parts of Fedora. These are the leaf packages whose usefulness is unknown to me. If nobody is actively using these, we can think about retiring them:
- ocaml-ancient - ocaml-augeas - ocaml-calendar - ocaml-camlimages - ocaml-cil - ocaml-csv - ocaml-curl - ocaml-curses - ocaml-dbus - ocaml-expat - ocaml-facile - ocaml-gsl - ocaml-lacaml - ocaml-mysql - ocaml-newt - ocaml-obuild - ocaml-omake - ocaml-perl4caml - ocaml-postgresql - ocaml-res - ocaml-SDL, and ocaml-lablgl too - ocaml-ssl - ocaml-xmlrpc-light - ocamlify - ocamlmod
If this looks good, then I will start making pull requests, starting from the top of that graph in #4 and work my way downward. Be warned that some of the proposed changes require coordination between multiple packages.
Regards,
On Fri, Mar 04, 2022 at 05:41:04PM -0700, Jerry James wrote:
- ocaml-ancient
This one will actually stop working when multicore comes along.
- ocaml-augeas
- ocaml-calendar
- ocaml-csv
- ocaml-curl
- ocaml-curses
I'm actively using these (in fact some are in RHEL).
- ocaml-camlimages
Is this a leaf? I thought it was used by something. Anyway it's somewhat dead upstream.
- ocaml-cil
This is (unfortunately) dead upstream although I think the concepts maybe even code is used by Frama-C and friends.
- ocaml-dbus
- ocaml-expat
- ocaml-facile
- ocaml-gsl
- ocaml-lacaml
- ocaml-mysql
- ocaml-newt
- ocaml-obuild
- ocaml-omake
- ocaml-perl4caml
- ocaml-postgresql
- ocaml-res
- ocaml-SDL, and ocaml-lablgl too
- ocaml-ssl
- ocaml-xmlrpc-light
- ocamlify
- ocamlmod
Unless these are causing problems, I wouldn't actively get rid of any of them. If packaging fails eg because of a new version of OCaml and it cannot easily be fixed then we would remove them.
Rich.
ocaml-devel@lists.fedoraproject.org