fpc produces and needs to link an object file with invalid section
header alignment, which lld refuses to do. The build fails with:
/usr/bin/ld: error: x86_64/units/x86_64-freebsd/i_linux.o: \
invalid alignment of section headers
Setting LLD_UNSAFE makes the port link with ld.bfd instead.
PR: 222172
Approved by: portmgr (LLD_UNSAFE blanket)
Sponsored by: The FreeBSD Foundation
variables deprecation revision
WITHOUT_NLS 2013-12-13 r336337
WITH_/WITHOUT_ 2014-02-24 r345870
NOPORT(DOC|EXAMPLE)S 2014-04-19 r351587
WITH_BDB_VER 2016-05-02 r414444
OVERRIDE_LINUX_BASE_PORT 2016-09-05 r421387
WITH_OPENSSL_(BASE|PORT) 2016-06-16 r416965
While there, add an ERROR variable that works like DEV_ERROR, but for
user facing errors, and move NOPORTDOCS,
NOPORTEXAMPLES and WITHOUT_NLS to it.
Cleanup bsd.sanity.mk a bit.
Fix fallout.
PR: 224613
Submitted by: mat
Exp-run by: antoine
Sponsored by: Absolight
Differential Revision: https://reviews.freebsd.org/D13490
FPC cannot use the gold linker. Gold requires that the linker script have
the --script flag passed, but doing so will break FreePascal (the flags
causes the internal linker to be bypassed). Since DragonFly switches
linkers through the environment and it's not clear how to set that, I've
hardcoded the linker path for DragonFly for now. Also, we must avoid using
Gold for the bootstrap compiler (which has not been hardcoded) so passing
LDVER=ld.bfd during the bootstrap stage is necessary to guarantee this.
FreeBSD doesn't use this variable so its harmless on that OPSYS.
The other major fix was fixing the dirent record which differs on DragonFly.
This is why unit searching has always failed.
All patches will be submitted upstream. This should be a no-op for FreeBSD,
thus no bump.
This is the first major release of FreePascal in nearly four years.
There are a ton of new features, way more to list here. see:
http://wiki.freepascal.org/FPC_New_Features_3.0
Several new unit ports were added, some were contracted. Most of
those were absorbed into the main FPC packages, but two units are
no longer supported: sndfile and matroshka.
All 99 remaining ports (including Lazarus ports) were build tested
on FreeBSD i386 and amd64 Release 10.2
UNIQUENAME was never unique, it was only used by USE_LDCONFIG and now,
we won't have conflicts there.
Use PKGBASE instead of LATEST_LINK in PKGLATESTFILE, the *only* consumer
is pkg-devel, and it works just fine without LATEST_LINK as pkg-devel
has the correct PKGNAME anyway.
Now that UNIQUENAME is gone, OPTIONSFILE is too. (it's been called
OPTIONS_FILE now.)
Reviewed by: antoine, bapt
Exp-run by: antoine
Sponsored by: Absolight
Differential Revision: https://reviews.freebsd.org/D3336
There were several substitions like "${XXX:S/$/.something/} which is the
equivalent of appending, e.g. "${XXX}.something".
So for the sake of comprehension, change these to appends, and also just
hardcode ".tar.gz" instead of using ${EXTRACT_SUFX} for the same reason.
Since the distfiles are being manually defined, there's no real purpose
to have a variable in the name, and if the EXTRACT_SUFX changes for any
reason (say a new distfile with a different suffix requiring USES+=tar),
then the code actually breaks. These changes make the code easier to
read, comprehend, and arguably makes the port more robust.
The googlecode URL only provides 2.6.0 and 2.6.2 versions of the man pages
and bootstrap compiler, but not the current 2.6.4, so remove those urls.
While here, simplify the LOCAL distcache site urls. The substition is not
necessary.
The Free Pascal Compiler port currently mandates that the bootstrap
compiler be the same version of the compiler being built. This means that
every update requires a new bootstrap compiler to be generated before the
update. This goes against the philosophy of a bootstrap compiler, which
aims to allow older compilers to build self-hosting modern compilers. FPC
is capable of this, but the feature wasn't being leveraged.
There are a lot of changes in this commit, but I believe the resulting
compiler is the same as before the commit, thus PORTREVISION has not been
bumped. Changes include:
* Add DragonFly bootstrap compiler 2.6.4 to list of distfiles
* use OPSYS to make builds generic between FreeBSD and DragonFly
* Add FREEBSD PLIST variable as FreeBSD builds an extra unit
* Create the framework to have a bootstrap compiler of an older version
than the current version (BOOTVER variable)
* split PP variable out of MAKE_ARGS and use NEWPPC or BOOTPPC to
specify PP uniquely (required when bootstrap version is different)
* wrap compound command with parenthesis
* Use options lists on TAR man page (xfz without hyphen is legacy)
* unmask installation commands
* respect 80-column limits, wrapping as necessary
* bring in some dports-specific changes that have no effect on port
to eliminate dports patch files
future work:
When version 3.0 is released, the new fpc make program will be built
which will have some moderate impacts to the build process and it
will use a "bootstrap" target.
The intention is to continue using the 2.6.4 bootstrap compilers to
build the upcoming 3.0 compiler when it is released. New bootstrap
compilers will not be generated until the existing bootstrap compilers
are unable to bootstrap the upcoming release.
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
For a while now bsdtar is able to autotermine compression and archive format.
Let's then use tar directly instead of piping to tar.
Now USE_BZIP2 and USE_XZ only set EXTRACT_SUFX to the right format