There are no significant changes between this version and the previous
one, but the head of upstream is significantly smaller. This reduces
the distfile from 150Mb to 91Mb.
A few of the pkg programs were made unexecutable -- they didn't work
anyway because the rtld couldn't find the libraries. By relocating
them to cm3/bin and using symlinks instead fixes the issues.
When the base install moved from $LOCALBASE to $LOCALBASE/cm3, the
conflict with cvsup disappeared. The conflict wasn't current anyway,
it should have been moved to net/cvsup-static as the original cvsup
ports were removed within the last year.
Modula3 hasn't had a proper release in close to 5 years. However, the
project has moved to github and has been under slow continuous
development. The internal version was recently switch to 5.10.0, but
this is not a release.
A new build script is used which simplifies the port makefile and even
the generation of new bootstrap compilers. However, the original 5.8.6
bootstrap still works with some inline modifications.
This version still uses the gcc backend, but eventually it could be
switched to the new c-backend, something that DragonFly could use as
well. The base has been moved from $LOCALBASE to $LOCALBASE/cm3, so
the "example" programs are back with the rest.
Modula3 provides a newer cvsup which is unconditionally installed.
This put the port in conflict with the two expiring cvsup ports. They've
been removed, but a new cvsup-static port took their place. Update the
CONFLICTS_INSTALL on both modula3 and cvsup-static as a follow-up to
change in cvsup-* ports.
Always rely on unixODBC each time a port is looking for libodbc.so
Remove odbc compat from libiodbc
This allows to install both kde and gnome at the same time
While here:
- Convert libiodbc to USES=libtool
- Convert a bunch of libiodbc dependencies to USES=libtool
- Chase libiodbc.so shlib change
- Stagify some ports
- Convert some ports to USES=pgsql
Discussed with: rakuco (kde)
With hat: portmgr
Since FreeBSD 8.4 and FreeBSD 9.1 make(1) do support :tu and :tl as a
replacement for :U and :L (which has been marked as deprecated)
bmake which is the default on FreeBSD 10+ only support by default
:tu/:tl a hack has been added at the time to support :U and :L to ease
migration. This hack is now not necessary anymore
Note that this makes the ports tree incompatible with make(1) from
FreeBSD 8.3 or earlier
With hat: portmgr
It doesn't appear possible to have two custom licenses combined, so I
had to get creative and concatenate them into one combined document.
Also, the auto-generated plist had to be modified to add the three new
entries. There may be a better way to do this (e.g. use >> ${TMPPLIST}
instead of > ${TMPPLIST} on first line) but at least the awk method
works durably.
The Modula-3 bootstrap compiler was built on FreeBSD 9.
It will not run on FreeBSD 8 due to missing symbols, e.g.
_ThreadRuneLocale. As with i386, I don't feel it is worth my time
to create a separate bootstrap for FreeBSD 8.x AMD64, so let's just
IGNORE this to save the user a 100Mb download.
It appears that modula3 will segfault if debug information is not
generated in stabs format. Clang doesn't recognize -gstabs+ options,
but removing it results in lots of segfaults early during the build.
By setting USE_GCC=any, FreeBSD 9 and below will use the base gcc 4.2.1
and FreeBSD10 and later will need lang/gcc. Verified on Redports.
While here, make sure .bak files do not get installed into stage by
using 'sed -i ""' rather than ${REINPLACE_CMD} which equals 'sed -i.bak'.
This is a huge port. It probably should be split into several separate
ports, but Modula-3's lack of popularity doesn't justify the large
effort that would require yet.
This port will download a "bootstrap" compiler which builds a fresh
compiler and small set of core components. The fresh compiler will
then build everything else. This includes, among other things:
* CM3 Integrated Development Environment (IDE)
* CM3 Code Generator based on gcc 4.3
* CM3 Middle- and back- ends
* CVSup (CM3 is too new to build the CVSUP already in ports)
* M3 GDB (GNU Debugger)
* M3 GUI and networking support
* M3 Quake
* some demos
* many examples
* many CM3 tools
* Oblique
* Caltech Parser toolset
* Full M3 library
* Lots of documentation and man pages
Intentionally left out for now: six (6) games, three (3) webdev progs,
kate (gui), sgml+deepcopy (devlib), pp (m3devtool)
This is the latest release of the Critical Mass Modula-3 (CM3) collection,
version 5.8.6, and it was released in July 2010. Days were spent
developing this port, but not so much time was developed to quality
assurance. I added a "recent" patch from upstream for network concurrency
and also modified the getaddrbyname implementation as the original one
raised IPError exceptions due to my VM not having a fully qualified
hostname and external IP address. My modification makes the exception
look up hostent with 127.0.0.1 first, then raise a new exception on error.
It seems to work, but like I said, it was not heavily tested.
Most of the programs require a running X (Trestle), which I don't have
at the moment, so they stop with an appropriate raised exception. I only
assume they work, I'll have to check later.
Right now only FreeBSD AMD64 is supported. I do not expect to attempt
to support FreeBSD i386. I will probably make an attempt to cross-compile
this on DragonFly x86-64 after appropriate patches are added. A few
months ago I nearly succeeded in porting CM3 to DragonFly and I expect to
succeed on the next attempt. If other platforms are desired, somebody
else will have to create bootstraps and any necessary patches.
This was built and poudriere-tested on FreeBSD 9.2. Only libc, libm, and
libpthread are dynamically loaded so it should build fine on FreeBSD 8.4.
I don't have access to my Redports repository ATM so I can't test FreeBSD
10+, but I will attempt to fix should it fail to build on those platforms.
Hopefully someone will find this port useful. I was surprised that
apparently the full Modula-3 compiler set has never been ported to
FreeBSD, only the ezm3 version needed to build cvsup. Modula-3 is a nice
language that probably deserved to be widely used outside of academia.