Changeset View
Standalone View
Makefile
# Created by: Yukihiro Nakai <nakai@FreeBSD.org> | # Created by: Yukihiro Nakai <nakai@FreeBSD.org> | |||||||||||
# $FreeBSD$ | # $FreeBSD$ | |||||||||||
PORTNAME= mono | PORTNAME= mono | |||||||||||
PORTVERSION= 5.10.1.57 | # BRANCH: 2020-02 | |||||||||||
PORTREVISION= 3 | PORTVERSION= 6.8.0.105 | |||||||||||
CATEGORIES= lang | CATEGORIES= lang | |||||||||||
MASTER_SITES= https://download.mono-project.com/sources/mono/ | MASTER_SITES= https://download.mono-project.com/sources/mono/ | |||||||||||
DISTFILES= ${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX} | DISTFILES= ${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX} | |||||||||||
MAINTAINER= mono@FreeBSD.org | MAINTAINER= prj@rootwyrm.com | |||||||||||
tcberner: ^ why not become part of mono@? | ||||||||||||
Done Inline ActionsI personally think at this point, mono@ as an organization is better off being retired for now, since it would be an organization of one. (Also I don't have a bit; I'm just this guy on the Internet(TM).) I am fully in favor of reinstating it if this successfully regenerates interest and brings some more users and maintainers to the table though. prj_rootwyrm.com: I personally think at this point, mono@ as an organization is better off being retired for now… | ||||||||||||
Not Done Inline ActionsI refreshed the mono@ team page on the wiki: there is a bunch of people who have been contributing updates to the mono ports, including @feld @dbn @dvl and @russ.haley_gmail.com (I hope these mentions will subscribe them to this review). I invite them to update the wiki page if they are no longer interest in maintaining mono: I second what @tcberner says, joining and providing manpower to mono@ seems better than changing the maintainer of lang/mono. romain: I refreshed the mono@ team page on the wiki: there is a bunch of people who have been… | ||||||||||||
Not Done Inline ActionsOkay, so what about for those of us who do not have a bit then? Also I have spoken with @feld and he stepped down from groups because he just doesn't have time, so he's not actually part of mono@. And we did put the question of 'is anybody still alive' to the mailing list something like a year ago with no response. I also asked ports@ and got a lot of "please update it" with no response from any of the mono folks. I also reached out to individuals back then, same lack of response. The mailing list hasn't had any non-automated or non-spam traffic in over a year. There's multiple bugs including numerous ones with (now obsoleted by upstream) patches that have been open well over a year unaddressed. As I said; I'm not unopposed at all to resurrecting mono@ but as a project, we really need to be certain that it's going to maintain stewardship of specific ports and not simply be a dumping ground for all things .NET. Especially as this is hoped to just be the beginning. My intent is to start here with Mono (the relatively low-hanging fruit,) and to progress onto full CoreCLR which fans out to dozens of things including better Azure and Azure Pipelines support. prj_rootwyrm.com: Okay, so what about for those of us who do not have a bit then? Also I have spoken with @feld… | ||||||||||||
Not Done Inline ActionsI think changing the maintainer doesn't mean to sentence that mono@ is dead. We still have freebsd-mono@ mailing list and mono@ is forwarding to it. Having him listed in the maintainer explicitly marks his responsibility, which is also a good thing. I believe that @prj_rootwyrm.com is happy to see that more people join the mono and .NET efforts. Joining (or reviving?) the mono@ team and being the maintainer of mono port shouldn't be conflict. And I recommend him doing both. Note that being a committer isn't the requirement to join a ports team, he just need a committer to help get the patch from him or reviewed by him to commit to the tree. Helping mono@ is also a good practice for him to become a committer in the future. I suggest that after other parts of this patch are good to commit, we can just let it go into the tree. This can attract more contributors and developers. When more people are contributing to mono@ and @prj_rootwyrm.com are feeling good, we can of course transfer the maintainershop to mono@ again. lwhsu: I think changing the maintainer doesn't mean to sentence that mono@ is dead. We still have… | ||||||||||||
COMMENT= Open source implementation of .NET Development Framework | COMMENT= Open source implementation of .NET Development Framework | |||||||||||
LICENSE= MIT | LICENSE= MIT | |||||||||||
LICENSE_FILE= ${WRKSRC}/LICENSE | LICENSE_FILE= ${WRKSRC}/LICENSE | |||||||||||
ONLY_FOR_ARCHS= amd64 armv6 armv7 i386 powerpc | .if defined(QEMU_EMULATING) && "${QEMU_EMULATING}" == "1" | |||||||||||
BROKEN= fails to build under qemu: Roslyn requires more functional POSIX implementation | ||||||||||||
.endif | ||||||||||||
NOT_FOR_ARCHS= armeb riscv64 riscv64sf sparc64 | ||||||||||||
# Do not permit ccache use due to observed poor invalidation behavior | ||||||||||||
NO_CCACHE= yes | ||||||||||||
BUILD_DEPENDS= p5-XML-Parser>=0:textproc/p5-XML-Parser \ | BUILD_DEPENDS= p5-XML-Parser>=0:textproc/p5-XML-Parser \ | |||||||||||
bash:shells/bash \ | bash:shells/bash \ | |||||||||||
Not Done Inline Actions^ USES=iconv tcberner: ^
```
USES=iconv
``` | ||||||||||||
Done Inline ActionsWhoops, yes, this was a cleanup error on my part. It does have USES=iconv and I just neglected to clean up from other tests being done. prj_rootwyrm.com: Whoops, yes, this was a cleanup error on my part. It does have `USES=iconv` and I just… | ||||||||||||
cmake>0:devel/cmake | cmake>0:devel/cmake | |||||||||||
LIB_DEPENDS= libinotify.so:devel/libinotify | LIB_DEPENDS= libiconv.so:converters/libiconv \ | |||||||||||
salvadoreUnsubmitted Not Done Inline Actions^ iconv is still present here, although you added USES=iconv. salvadore: ^ iconv is still present here, although you added `USES=iconv`. | ||||||||||||
RUN_DEPENDS= ca_root_nss>=0:security/ca_root_nss | libinotify.so:devel/libinotify | |||||||||||
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pillow>=0:graphics/py-pillow@${PY_FLAVOR} \ | ||||||||||||
ca_root_nss>=0:security/ca_root_nss \ | ||||||||||||
sqlite3>0:databases/sqlite3 \ | ||||||||||||
zip>=0:archivers/zip | ||||||||||||
CONFLICTS_INSTALL= czmq-3* | CONFLICTS_INSTALL= czmq-3* | |||||||||||
OPTIONS_DEFINE= MONOLITE NLS X11 | ||||||||||||
OPTIONS_DEFAULT= MONOLITE X11 | ||||||||||||
OPTIONS_SUB= yes | ||||||||||||
MONOLITE_DESC= Use monolite to bootstrap mcs (otherwise use installed mcs) | ||||||||||||
MONOLITE_DISTFILES= monolite-linux-${MONOLITE_VERSION}-latest.tar.gz:monolite | ||||||||||||
MONOLITE_MASTER_SITES= http://download.mono-project.com/monolite/:monolite | ||||||||||||
MONOLITE_VERSION= 1051000004 | ||||||||||||
NLS_CONFIGURE_OFF= --disable-nls | ||||||||||||
NLS_USES= gettext | ||||||||||||
X11_USES= display:test | ||||||||||||
USES= autoreconf bison compiler:c11 cpe gmake iconv libtool \ | USES= autoreconf bison compiler:c11 cpe gmake iconv libtool \ | |||||||||||
pathfix perl5 python shebangfix tar:bzip2 | pathfix perl5 python:3.6+ shebangfix tar:xz | |||||||||||
USE_PERL5= build | USE_PERL5= build | |||||||||||
CONFIGURE_SCRIPT= autogen.sh | ||||||||||||
GNU_CONFIGURE= yes | GNU_CONFIGURE= yes | |||||||||||
Not Done Inline ActionsINOTIFY_CONFIGURE_ENABLE=inotify is not working? analogously for the others tcberner: ```
INOTIFY_CONFIGURE_ENABLE=inotify
```
is not working? analogously for the others | ||||||||||||
Done Inline ActionsThere is no equivalent --with-inotify or --enable-inotify, only the --disable-inotify for FreeBSD. All other platforms are assumed to either be Windows, have Linux-equivalent inotify, or fail the -linotify check. FreeBSD passes -linotify if another package installs devel/libinotify but fails #include <sys/inotify.h> due to missing -I/usr/local/include As a result I'll need to update this patch. I'm working with upstream to figure out how we can fix that lower level issue, which will fix the "(BROKEN)" part fully. prj_rootwyrm.com: There is no equivalent `--with-inotify` or `--enable-inotify`, only the `--disable-inotify` for… | ||||||||||||
USE_LDCONFIG= yes | USE_LDCONFIG= yes | |||||||||||
SHEBANG_FILES= scripts/mono-heapviz mono/mini/genmdesc.py mono/tests/test_lldb.py | SHEBANG_FILES= scripts/mono-package-runtime scripts/mono-heapviz mono/mini/genmdesc.py \ | |||||||||||
mono/tests/test_lldb.py mono/tests/gc-descriptors/gen-descriptor-tests.py \ | ||||||||||||
scripts/mono-find-provides.in scripts/mono-find-requires.in | ||||||||||||
BINARY_ALIAS= python=${PYTHON_CMD} | BINARY_ALIAS= python=${PYTHON_CMD} | |||||||||||
CONFIGURE_ARGS= --disable-dtrace --enable-btls | CONFIGURE_ARGS_aarch64= --with-csc=mcs | |||||||||||
CONFIGURE_ENV= ac_cv_header_sys_inotify_h=no | CONFIGURE_ARGS= ${CONFIGURE_ARGS_${ARCH}} --disable-dtrace --disable-boehm | |||||||||||
# Do not remove - this is needed to work around automake's lack of hinting | ||||||||||||
CONFIGURE_ENV+= ac_cv_header_sys_inotify_h=yes | ||||||||||||
MAKE_ENV= MONO_SHARED_DIR="${WRKDIR}" \ | MAKE_ENV= MONO_SHARED_DIR="${WRKDIR}" \ | |||||||||||
INSTALL_STRIP_FLAG="${STRIP}" \ | INSTALL_STRIP_FLAG="${STRIP}" | |||||||||||
TZ=UTC | ||||||||||||
TEST_ARGS= -k | TEST_ARGS= -k | |||||||||||
TEST_TARGET= check | TEST_TARGET= check | |||||||||||
PORTSCOUT= limit:^\d+\.\d+\.[1-9]\d* | PORTSCOUT= limit:^\d+\.\d+\.[1-9]\d* | |||||||||||
LOCALBASE?= /usr/local | ||||||||||||
.if !exists(${LOCALBASE}/bin/mcs) | .if !exists(${LOCALBASE}/bin/mcs) | |||||||||||
OPTIONS_SLAVE= MONOLITE | OPTIONS_SLAVE= MONOLITE | |||||||||||
.endif | .endif | |||||||||||
Not Done Inline Actionsno. Options must not change themselves depending on what is installed. mat: no. Options must not change themselves depending on what is installed. | ||||||||||||
.include <bsd.port.pre.mk> | MONOLITE_DESC= Use monolite to bootstrap mcs (otherwise use installed mcs) | |||||||||||
MONOLITE_DISTFILES= monolite-linux-${MONOLITE_VERSION}-latest.tar.gz:monolite | ||||||||||||
MONOLITE_MASTER_SITES= http://download.mono-project.com/monolite/:monolite | ||||||||||||
# 2020-01-13 @ 1798d23b | ||||||||||||
Not Done Inline ActionsWrong place in the Makefile. See Chapter 15. Order of Variables in Port Makefiles. Also, the .if will never work, PORT_OPTIONS is only defined after including bsd.port.options.mk. You would be better of using a helper in this case. mat: Wrong place in the Makefile. See [[ https://www.freebsd.org/doc/en/books/porters… | ||||||||||||
MONOLITE_VERSION= 1798d23b-3dbc-4161-b3f4-6bb00134ee4e | ||||||||||||
Not Done Inline Actions^ is it only working with python3.7? tcberner: ^ is it only working with python3.7? | ||||||||||||
Not Done Inline Actions3.6+ is preferred (and 2.7 is finally dead!) Would python:3.6+ be more correct here then? prj_rootwyrm.com: 3.6+ is preferred (and 2.7 is finally dead!) Would `python:3.6+` be more correct here then? | ||||||||||||
Not Done Inline Actionsyes tcberner: yes | ||||||||||||
.if ${PYTHON_REL} < 3500 | .include <bsd.port.options.mk> | |||||||||||
tobikUnsubmitted Not Done Inline ActionsThis does not look ready to me. All the options are broken now because they are defined after bsd.port.options.mk. tobik: This does not look ready to me. All the options are broken now because they are defined after… | ||||||||||||
RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}pillow6>=0:graphics/py-pillow6@${PY_FLAVOR} | ||||||||||||
.else | OPTIONS_DEFINE= MONOLITE BIGARRAY NINJA NLS ODBC SPECTRE X11 MONODEV | |||||||||||
RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}pillow>=0:graphics/py-pillow@${PY_FLAVOR} | OPTIONS_DEFAULT= MONOLITE NLS X11 | |||||||||||
OPTIONS_SUB= yes | ||||||||||||
Not Done Inline ActionsPlease look at bug 229710 — I have a patch for btls there. Also I'm not sure what with-csc=mcs does — use the old compiler instead of Roslyn? — but with Roslyn it's still called mcs everywhere… Disabling parallelism (/parallel-) was the fix for the concurrency issue back then, but looks like there are real (but "overkill") memory fixes out there. val_packett.cool: Please look at [[ https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=229710 | bug 229710 ]] — I… | ||||||||||||
Not Done Inline Actions(the patch there should be updated for the new armreg.h with the _VAL things on CURRENT) val_packett.cool: (the patch there should be updated for the new `armreg.h` with the `_VAL` things on CURRENT) | ||||||||||||
Not Done Inline Actionsmcs is not Roslyn; it's the Mono C Sharp [compiler] (IIRC. Don't hold me to that part of it.) If not selected with --with-csc=mcs then builds will now attempt to use /actual/ Roslyn CSC.exe by default now - which is a very different beast indeed. Mono and Roslyn are completely separate projects and groups. I'll take a look at that patch this evening, after talking with upstream folks today. The .NET 5.0 discussions regarding SSL/TLS are ongoing but that's still a bit out. Some of the changes it makes are already upstream, so I'll need to do some cherry picking, but I'd say there's a decent chance this is upstreamable. prj_rootwyrm.com: `mcs` is not Roslyn; it's the Mono C Sharp [compiler] (IIRC. Don't hold me to that part of it.)… | ||||||||||||
BIGARRAY_DESC= Enable allocating arrays greater than Int32.MaxValue | ||||||||||||
BIGARRAY_CONFIGURE_ENABLE= big-arrays | ||||||||||||
MONODEV_DESC= Build for Mono development (disables crash privacy) | ||||||||||||
.if ${PORT_OPTIONS:MMONODEV} | ||||||||||||
Not Done Inline ActionsBefore any include, ARCH is not defined, so this cannot possibly work. Also, at that point, PLIST is not set, so no need to use +=. mat: Before any include, `ARCH` is not defined, so this cannot possibly work.
Also, at that point… | ||||||||||||
CONFIGURE_ARGS+=--enable-icall-symbol-map --enable-icall-export --with-crash_privacy=no | ||||||||||||
.endif | .endif | |||||||||||
post-extract-MONOLITE-on: | NINJA_DESC= Use ninja to build wherever possible | |||||||||||
${MKDIR} ${WRKSRC}/mcs/class/lib/monolite-linux | NINJA_CONFIGURE_ON= ninja | |||||||||||
${MV} ${WRKDIR}/monolite-linux-${MONOLITE_VERSION}-latest ${WRKSRC}/mcs/class/lib/monolite-linux/${MONOLITE_VERSION} | NINJA_BUILD_DEPENDS= ninja>0:devel/ninja | |||||||||||
post-patch: | NLS_DESC= NLS Localization Support | |||||||||||
Not Done Inline ActionsYou cannot define any options helpers or otherwise after including bsd.port.options.mk. This line should be removed. (Or all the options afterwards can be removed as they do not do anything.) mat: You cannot define any options helpers or otherwise after including bsd.port.options.mk. This… | ||||||||||||
${REINPLACE_CMD} -e 's|^#!/bin/bash|#!/usr/bin/env bash|g' \ | NLS_CONFIGURE_OFF= --disable-nls | |||||||||||
${WRKSRC}/scripts/mono-find-provides.in \ | NLS_USES= gettext | |||||||||||
${WRKSRC}/scripts/mono-find-requires.in \ | ||||||||||||
${WRKSRC}/scripts/mono-test-install | ||||||||||||
${FIND} ${WRKSRC} -name '*.sh' | ${XARGS} ${REINPLACE_CMD} \ | ||||||||||||
-e 's|^#!/bin/bash|#!/bin/sh|g' | ||||||||||||
${SED} 's/tarball/${PORTVERSION}/' ${WRKSRC}/mono/mini/Makefile.am.in \ | ||||||||||||
> ${WRKSRC}/mono/mini/Makefile.am | ||||||||||||
${REINPLACE_CMD} -e 's|/usr/share|${PREFIX}|g' \ | ||||||||||||
${WRKSRC}/mcs/class/corlib/System/Environment.cs \ | ||||||||||||
${WRKSRC}/external/corefx/src/System.Runtime.Extensions/src/System/Environment.Unix.cs | ||||||||||||
${REINPLACE_CMD} -e 's|/usr/share/.mono|${PREFIX}/share/mono|g' \ | ||||||||||||
${WRKSRC}/man/mono-configuration-crypto.1 \ | ||||||||||||
${WRKSRC}/man/mono.1 \ | ||||||||||||
${WRKSRC}/man/mozroots.1 | ||||||||||||
post-configure: | ODBC_DESC= System.Data: support for unixODBC | |||||||||||
${REINPLACE_CMD} -e 's|share\/man|man|g' \ | ODBC_BUILD_DEPENDS= unixODBC>0:databases/unixODBC | |||||||||||
${WRKSRC}/mcs/jay/Makefile | ODBC_LIB_DEPENDS= libodbc.so:databases/unixODBC | |||||||||||
SPECTRE_DESC= Enable internal Mono Spectre mitigations | ||||||||||||
.if ${PORT_OPTIONS:MSPECTRE} | ||||||||||||
CONFIGURE_ARGS+=--with-spectre-mitigation=yes | ||||||||||||
.endif | ||||||||||||
X11_USES= display:test | ||||||||||||
X11_CONFIGURE_WITH= x | ||||||||||||
X11_RUN_DEPENDS= pango>0:x11-toolkits/pango \ | ||||||||||||
libgdiplus>0:x11-toolkits/libgdiplus | ||||||||||||
post-patch: | ||||||||||||
# Needed to force regeneration due to tarball packaging | ||||||||||||
${RM} ${WRKSRC}/configure ${WRKSRC}/Makefile \ | ||||||||||||
${WRKSRC}/mono/Makefile \ | ||||||||||||
${WRKSRC}/mono/native/Makefile \ | ||||||||||||
post-install: | post-install: | |||||||||||
${MKDIR} ${STAGEDIR}${PREFIX}/mono | ${MKDIR} ${STAGEDIR}${PREFIX}/mono | |||||||||||
.include <bsd.port.pre.mk> | ||||||||||||
.if ${ARCH} == "powerpc64" || ${ARCH} == "powerpc" | ||||||||||||
Not Done Inline Actions
mat: | ||||||||||||
PLIST+= ${.CURDIR}/pkg-plist.powerpc | ||||||||||||
.endif | ||||||||||||
.include <bsd.port.post.mk> | .include <bsd.port.post.mk> | |||||||||||
Not Done Inline ActionsThe last section in a Makefile is the targets, put this before the targets. mat: The last section in a Makefile is the targets, put this before the targets. | ||||||||||||
Not Done Inline Actions
mat: |
^ why not become part of mono@?