Prerelease thoughts Part III: Packages
Continued from Prerelease thoughts Part II: CI
mulle-clang and mulle-sde
The compiler, debugger and the mulle-sde tools so far have been distributed
via packages. The compiler and the debugger are way too big, to be built as a
dependency every time. The mulle-sde tools can be installed via a shell
script and that ought to be sufficient. But being able to say
brew upgrade mulle-sde or
apt-get dist-upgrade is an undeniable advantage.
The libraries of mulle-objc are actually delivered via the package managing mechanisms implemented in mulle-sde (mulle-sourcetree specifically). This works decentralized and cross-platform and is the least of my worries.
The package distribution methods have been homebrew for macOS and an apt repository for Ubuntu/Debian Linux. While the process of package creation isn’t automated, there are still time costs associated with the production of these packages.
Ubuntu comes out with a new codename every half a year or so, like “xenial”,
“bionic”,”focal” and so forth. Being enamored with backward compatibility I
even tried to support “precise”. Debian users had to map the Ubuntu codename
like “bionic” to “buster” and then download a
.deb file directly.
The llvm monorepo change also affected my homebrew bottle formula for the compiler, which is now obsolete. I made an effort to build on Mojave with a new formula based on the homebrew llvm formula, but it inexplicably fails with funny errors. Whereas, when I build the compiler myself manually, it builds fine.
For CI I would need a Catalina version, but I can’t move to Catalina just yet.
The Dockerfile is in my opinion the primary “demo” of mulle-objc. It will be kept up to date.
Github has it’s own package delivery format. I experimentally created some packages for foundation-developer, but the download rates are close to zero. So I will just cut my losses here and will not pursue it further. Unfortunately there seems to be no way to remove packages. I may have to delete foundation-developer and re-import it at some time.
The compiler will no long be distributed via package repositories. There will be Debian packages for the testing and stable Debian distribution (testing) and that’s it. The focus therefore shifts from Ubuntu to Debian. This ought to be enough to support the current Ubuntu version and the version running in the CI VMs since Ubuntu is based on Debian.
This reduces the number of compiler package builds two two, instead of the previous five versions I made. As the apt-repository contains now only mull-sde, which is bash code, which isn’t OS specific, this also simplifies the apt repository setup.
On macOS you will have to build the compiler yourself. Unfortunately this means that CI using macOS is currently not feasible.
The debugger will be distributed source only. Building a working debugger on macOS has been very unpleasant the last couple of years and gdb seems badly supported. I hope the situation improves here over time, so I will just sit it out.
mulle-sde will still be delivered via homebrew and apt.
Continue to Prerelease thoughts Part IV: Project