-
Notifications
You must be signed in to change notification settings - Fork 12
Description
To make it easier to find than buried in an email thread, this is the list of things which I have found while testing the new builds.
- libraries are now (partially) stripped while building
This is wrong. Build process should build stuff and the developer should decide what to do next. install-sh and mintlib.spec (as well as our Github scripts) handle that on their own, exactly as they are supposed to do.
DESTDIRvs.prefix: why is the former useful? And even used in the build scripts now?
Traditionally, all "adopted" libraries (gemlib, cflib, etc) use PREFIX for placing include and lib folders. mintlib always has been special, using prefix (lowercase). DESTDIR was never publicly accessible/usable and for some reason it is now. Just for comparison:
make install DESTDIR=<prefix> output:
sbin/tzinit
usr/include
usr/lib
usr/sbin/tzselect, zdump, zic
usr/share
make install prefix=<prefix> output:
include
lib
sbin/tzinit, tzselect, zdump, zic
share
Why forcing the usr folder?
- new build system doesn't solve tzinit (and others) should build also for -m68020/-mcpu=5475 #60
Or, to be precise, it doesn't solve it nicely. As far as I can see, there are explicit steps in the Github script to generate:
mintlib-0.60.1-a50-mintelf.tar.bz2
mintlib-0.60.1-a50-mint.tar.bz2
These contain the complete mintlib build and tzinit & friends for 68000 and these archives are linked also from https://github.com/freemint/mintlib/blob/master/README.md. Then there's generated:
mintlib-0.60.1-a50-v4e.tar.bz2
mintlib-0.60.1-a50-020.tar.bz2
mintlib-0.60.1-a50-000.tar.bz2
which contain only tzinit & friends for the given architecture. I suppose the idea is to have those three archives downloadable & installable for the freemint snapshots (freemint/freemint#197) but I don't find this easy to understand. At minimum, we should provide:
make&make installwhich just install the usual files without any executables (so the main archive wouldn't contain any either)- (top-level)
make bin&make bin-install(or something like that) which builds the executables (perhaps instead of thetype=<target>something more generic ascflags=-cpu_optioncould be used to make it explicit what is happening) - rename those bin packages to something like mintlib-bin-0.60.1-a50-000.tar.bz2 and link them explicitly (e.g. as -latest) in the README
buildfolder doesn't contain all generated files, not even all object files
I have already mentioned in the email my dislike of the asymmetrical nature of the generated output tree (build/m68000 with directories like argp/.deps, common/.deps, ...). But the asymmetry goes even further, despite the fact that build/m68000 contains sunrpc, syscall and tz folders, object files are still generated in the source directory for those folders what is really ironic because it is -m68000 object files which are generated there.
I am aware that this is a leftover from the previous build system (where the library stuff was generated in lib, lib020 etc but object files for executables were produced in the respective folders) however I fail to see what is the advantage of the new structure then? A lot of changes pushed just to have some files built in another subfolder?
TL; DR version of this is that there are two regressions (stripping & usage of DESTDIR), one thing which didn't really change (one could generate tzinit & friends in a hacky way even before, too) and one thing about which I'm still not convinced that it improved something over the existing solution (the build folder).
Ideally, mintlib (and others) should drop this non-standard "holy trinity" and generate just files according to supplied CFLAGS for one target, e.g. something like make PREFIX=/m68k-atari-mintelf CFLAGS='-O -m68020-60 -g' LIBDIR=m68020-60 SUFFIX=_g. That would be something worth changing for sure.