Index: head/Mk/Uses/mono.mk
===================================================================
--- head/Mk/Uses/mono.mk (revision 473598)
+++ head/Mk/Uses/mono.mk (revision 473599)
@@ -1,186 +1,231 @@
# $FreeBSD$
#
# mono (c#) support
#
# Feature: mono
# Usage: USES=mono:ARGS
# Valid ARGS: nuget
#
# MAINTAINER= mono@FreeBSD.org
#
# Arguments:
#
# nuget Specifies that the port uses nuget packages.
#
# EXTRACT_ONLY is conditionally overridden to exclude all
# files with a '.nupkg' extension.
#
# Targets:
#
# makenuget This target will output the NUGET_DEPENDS based on the
# port's packages.config file.
#
+# makenupkg This target will create nupkg-${NAME} files based on the
+# port's downloaded packages in ${NUGET_PACKAGEDIR}
+#
# Variables overrideable by the port:
#
# NUGET_PACKAGEDIR The directory in which the port expects the
# nuget packages to be available
# default: ${WRKSRC}/packages
#
+# NUGET_LAYOUT The directory layout of ${NUGET_PACKAGEDIR}:
+# legacy:
+# ${NAME}
+# ${NAME}.${VERSION}
+# ${NAME.tl}/${VERSION}
+# flat:
+# ${NAME}
+# ${NAME:tl}
+# dotnet:
+# ${NAME:tl}/${VERSION}
+# default: legacy
+#
# NUGET_FEEDS A list of nuget feed names
# default: NUGET
#
# ${NAME}_URL: The base URL for the feed ${NAME}
# defaults:
# NUGET_URL=https://www.nuget.org/api/v2/
+# ${NAME}_URL=https://dotnet.myget.org/F/${NAME:tl:S/_/-/g}/api/v2/
#
# ${NAME}_FILE: The file containing a list of nuget packages from
# feed ${NAME} in the format:
# ${name}=${version}
+# default: ${PKGDIR}/nupkg-${NAME:tl}
#
# ${NAME}_DEPENDS: The list of nuget packages from feed ${NAME} in the
# format:
# ${name}=${version}
# defaults:
# NUGET_DEPENDS=${PAKET_DEPENDS}
#
# PAKET_PACKAGEDIR The directory in which the port expects the
# nuget packages (managed by paket) to be available
#
# PAKET_DEPENDS The list of nuget packages from a nuget feed. The
# version used needs to be resolved (unlike how paket
# works). The format is:
# ${name}=${version}
.if !defined(_INCLUDE_USES_MONO_MK)
_INCLUDE_USES_MONO_MK= yes
.if !empty(mono_ARGS:Nnuget)
IGNORE= USES=mono only supports an optional nuget argument
.endif
# Set the location of the .wapi directory so we write to a location we
# can always assume to be writable.
MONO_SHARED_DIR= ${WRKDIR}
CONFIGURE_ENV+= MONO_SHARED_DIR="${MONO_SHARED_DIR}"
MAKE_ENV+= MONO_SHARED_DIR="${MONO_SHARED_DIR}" TZ=UTC
BUILD_DEPENDS+= mono:lang/mono
RUN_DEPENDS+= mono:lang/mono
# Set the location that webaps served by XSP should use.
XSP_DOCROOT= ${PREFIX}/www/xsp
# gac utilities
GACUTIL=${LOCALBASE}/bin/gacutil /root ${PREFIX}/lib/ /gacdir ${PREFIX}/lib
GACUTIL_INSTALL=${GACUTIL} /i
GACUTIL_INSTALL_PACKAGE=${GACUTIL} /i /package 1.0 /package 2.0
.if ${mono_ARGS:Mnuget}
MAKE_ENV+= NUGET_PACKAGES=${NUGET_PACKAGEDIR}
# TODO: add nuget as a Port, use it for makenupkg
-NUGET_EXE?= ${WRKSRC}/external/nuget-binary/nuget.exe
+NUGET_EXE?= ${WRKDIR}/nuget.exe
+NUGET_LATEST_URL?= https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
_NUGET_PACKAGEDIR= ${WRKDIR}/.nuget/packages
NUGET_PACKAGEDIR?= ${WRKSRC}/packages
+NUGET_LAYOUT?= legacy
NUGET_FEEDS?= NUGET
NUGET_URL?= https://www.nuget.org/api/v2/
PAKET_PACKAGEDIR?=
PAKET_DEPENDS?=
NUGET_DEPENDS?= ${PAKET_DEPENDS}
. for feed in ${NUGET_FEEDS}
${feed}_DEPENDS?=
${feed}_FILE?= ${PKGDIR}/nupkg-${feed:tl}
+${feed}_URL?= https://dotnet.myget.org/F/${feed:tl:S/_/-/g}/api/v2/
. if exists(${${feed}_FILE})
${feed}_EXTRA!= ${CAT} ${${feed}_FILE}
. else
${feed}_EXTRA=
. endif
. for depend in ${${feed}_DEPENDS} ${${feed}_EXTRA}
. if empty(_NUGET_DEPENDS:M${depend})
id= ${depend:C/=.*$//}
version= ${depend:C/^.*=//}
group= nuget_${depend:S/.//g:S/-//g:S/=//g}
nupkg= ${id:tl}.${version}.nupkg
DISTFILES_${group}:= ${nupkg}:${group}
MASTER_SITES_${group}:= ${${feed}_URL}package/${id}/${version}?dummy=/:${group}
NUGET_NUPKGS_${group}:= ${nupkg}:${depend}
NUPKGS_${id}:= ${NUPKGS_${id}} ${version}
DISTFILES+= ${DISTFILES_nuget_${depend:S/.//g:S/-//g:S/=//g}}
MASTER_SITES+= ${MASTER_SITES_nuget_${depend:S/.//g:S/-//g:S/=//g}}
NUGET_NUPKGS+= ${NUGET_NUPKGS_nuget_${depend:S/.//g:S/-//g:S/=//g}}
_NUGET_DEPENDS+= ${depend}
. endif
. endfor
. endfor
EXTRACT_ONLY?= ${_DISTFILES:N*.nupkg}
_USES_extract+= 600:nuget-extract
nuget-extract:
@${MKDIR} ${_NUGET_PACKAGEDIR} ${PAKET_PACKAGEDIR}
. for nupkg in ${NUGET_NUPKGS}
-. if !empty(NUPKGS_${nupkg:C/^.*://:C/=.*//}:[2])
- @${MKDIR} ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S|=|/|}
-. else
- @${MKDIR} ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:C/=.*//}
- @${LN} -s ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:C/=.*//} ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S|=|/|}
-. endif
- @tar -xf ${DISTDIR}/${nupkg:C/:.*$//} -C ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S|=|/|} \
+ @${MKDIR} ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}
+ @tar -xf ${DISTDIR}/${nupkg:C/:.*$//} -C ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|} \
-s/%2B/\+/g -s/%2B/\+/g -s/%2B/\+/g \
--exclude '\[Content_Types\].xml' \
--exclude package/ \
--exclude _rels/
- @${CP} ${DISTDIR}/${nupkg:C/:.*$//} ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S|=|/|}/${nupkg:C/^.*://:S/=/./}.nupkg
+ @${MV} ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}/${nupkg:C/^.*://:C/=.*//}.nuspec \
+ ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}/${nupkg:tl:C/^.*://:C/=.*//}.nuspec
+ @${CP} ${DISTDIR}/${nupkg:C/:.*$//} ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}/${nupkg:tl:C/^.*://:S/=/./}.nupkg
@openssl dgst -sha512 -binary ${DISTDIR}/${nupkg:C/:.*$//} | openssl enc -base64 | ${TR} -d "\n" \
- > ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S|=|/|}/${nupkg:C/^.*://:S/=/./}.nupkg.sha512
- @${LN} -s ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S|=|/|} ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S/=/./}
-. if ${nupkg:C/^.*://:tl} != ${nupkg:C/^.*://}
- @${LN} -s ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S|=|/|}/${nupkg:C/^.*://:C/=.*$//}.nuspec ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S|=|/|}/${nupkg:C/^.*://:C/=.*$//:tl}.nuspec
- @${LN} -s ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S|=|/|}/${nupkg:C/^.*://:S/=/./}.nupkg ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S|=|/|}/${nupkg:C/^.*://:S/=/./:tl}.nupkg
- @${LN} -s ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S|=|/|}/${nupkg:C/^.*://:S/=/./}.nupkg.sha512 ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S|=|/|}/${nupkg:C/^.*://:S/=/./:tl}.nupkg.sha512
- @${LN} -s ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S|=|/|} ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S/=/./:tl}
- @[ -e ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:C/=.*$//:tl} ] || ${LN} -s ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:C/=.*$//} ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:C/=.*$//:tl}
+ > ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}/${nupkg:tl:C/^.*://:S/=/./}.nupkg.sha512
+. if ${NUGET_LAYOUT} == legacy
+ @${CP} -a ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}/ ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S|=|.|}/
+ @${CP} -a ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}/ ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:C|=.*||}/
+. if ${nupkg} != ${nupkg:tl}
+ @(cd ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:C|=.*||}; \
+ ${MV} ${nupkg:tl:C/^.*://:C/=.*//}.nuspec ${nupkg:C/^.*://:C/=.*//}.nuspec; \
+ ${MV} ${nupkg:tl:C/^.*://:S/=/./}.nupkg ${nupkg:C/^.*://:S/=/./}.nupkg; \
+ ${MV} ${nupkg:tl:C/^.*://:S/=/./}.nupkg.sha512 ${nupkg:C/^.*://:S/=/./}.nupkg.sha512)
+ @(cd ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S|=|.|}; \
+ ${MV} ${nupkg:tl:C/^.*://:C/=.*//}.nuspec ${nupkg:C/^.*://:C/=.*//}.nuspec; \
+ ${MV} ${nupkg:tl:C/^.*://:S/=/./}.nupkg ${nupkg:C/^.*://:S/=/./}.nupkg; \
+ ${MV} ${nupkg:tl:C/^.*://:S/=/./}.nupkg.sha512 ${nupkg:C/^.*://:S/=/./}.nupkg.sha512)
+. endif
+. elif ${NUGET_LAYOUT} == flat
+ @${CP} -a ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}/ ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:C|=.*||}/
+ @${RM} -r ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}
+. if ${nupkg} != ${nupkg:tl}
+ @${CP} -a ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:C|=.*||}/ ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:C|=.*||}/
+ @(cd ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:C|=.*||}; \
+ ${MV} ${nupkg:tl:C/^.*://:C/=.*//}.nuspec ${nupkg:C/^.*://:C/=.*//}.nuspec; \
+ ${MV} ${nupkg:tl:C/^.*://:S/=/./}.nupkg ${nupkg:C/^.*://:S/=/./}.nupkg; \
+ ${MV} ${nupkg:tl:C/^.*://:S/=/./}.nupkg.sha512 ${nupkg:C/^.*://:S/=/./}.nupkg.sha512)
+. endif
. endif
. endfor
- @${LN} -s ${_NUGET_PACKAGEDIR} ${NUGET_PACKAGEDIR}
+ @${RLN} ${_NUGET_PACKAGEDIR} ${NUGET_PACKAGEDIR}
@${TOUCH} ${WRKDIR}/.nuget-sentinal
_USES_extract+= 601:paket-extract
paket-extract:
. for nupkg in ${PAKET_DEPENDS}
- @${LN} -s ${_NUGET_PACKAGEDIR}/${nupkg:S|=|/|} ${PAKET_PACKAGEDIR}/${nupkg:C/=.*$//}
+ @${RLN} ${_NUGET_PACKAGEDIR}/${nupkg:tl:S|=|/|} ${PAKET_PACKAGEDIR}/${nupkg:C/=.*//}
+ @(cd ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}; \
+ ${CP} ${nupkg:tl:C/^.*://:C/=.*//}.nuspec ${nupkg:C/^.*://:C/=.*//}.nuspec; \
+ ${CP} ${nupkg:tl:C/^.*://:S/=/./}.nupkg ${nupkg:C/^.*://:S/=/./}.nupkg; \
+ ${CP} ${nupkg:tl:C/^.*://:S/=/./}.nupkg.sha512 ${nupkg:C/^.*://:S/=/./}.nupkg.sha512)
. endfor
.endif
makenuget: patch
@${FIND} ${WRKSRC} -name packages.config | \
${XARGS} ${SED} -nE 's|.*.*|\1=\2|gp' | \
${SORT} -u | \
${SED} \
-e '1s|^|NUGET_DEPENDS= |' \
-e '2,$$s|^| |g' \
-e '$$!s|$$| \\|g'
makenupkg:
+ @[ -f ${NUGET_EXE} ] || fetch -o ${NUGET_EXE} ${NUGET_LATEST_URL}
.for feed in ${NUGET_FEEDS}
- @[ -f ${WRKDIR}/.nupkg-${feed:tl} ] || mono ${NUGET_EXE} list -IncludeDelisted -PreRelease -Source ${${feed}_URL} | ${SED} 's/ .*//g' > ${WRKDIR}/.nupkg-${feed:tl}
+ @[ -f ${WRKDIR}/.nupkg-${feed:tl} -o ${feed} = NUGET ] || mono ${NUGET_EXE} list -AllVersions -IncludeDelisted -PreRelease -Source ${${feed}_URL} | ${SED} 's/ /=/g' > ${WRKDIR}/.nupkg-${feed:tl}
@${RM} ${WRKDIR}/nupkg-${feed:tl}
.endfor
- @for nupkg in `${FIND} ${_NUGET_PACKAGEDIR} -name '*.sha512' | ${SED} 's/\.sha512//g'`; \
+ @for nupkg in `${FIND} ${NUGET_PACKAGEDIR}/ -name '*.sha512' | ${SED} 's/\.sha512//g'`; \
do \
name="`tar -tf $${nupkg} | ${GREP} nuspec | ${SED} 's/.nuspec//g'`"; \
version="`${BASENAME} $$(${DIRNAME} $$nupkg)`"; \
${ECHO} "$$name=$${version#$$name.}"; \
done | ${SORT} -u > ${WRKDIR}/.nupkgs
@${CAT} ${WRKDIR}/.nupkgs | while read nupkg; do \
+ default=no; \
for feed in ${NUGET_FEEDS:tl}; do \
- if ${GREP} -q "^$${nupkg%%=*}\$$" ${WRKDIR}/.nupkg-$$feed; then \
+ if [ $$feed = nuget ]; then \
+ default=yes; \
+ elif ${GREP} -q "^$$nupkg\$$" ${WRKDIR}/.nupkg-$$feed; then \
${ECHO} $$nupkg >> ${WRKDIR}/nupkg-$$feed; \
+ default=na; \
break; \
fi; \
done; \
+ if [ $$default = yes ]; then \
+ ${ECHO} $$nupkg >> ${WRKDIR}/nupkg-nuget; \
+ fi; \
done
.endif
Index: head/devel/google-gdata/Makefile
===================================================================
--- head/devel/google-gdata/Makefile (revision 473598)
+++ head/devel/google-gdata/Makefile (revision 473599)
@@ -1,35 +1,36 @@
# Created by: Romain Tartiere
# $FreeBSD$
PORTNAME= google-gdata
PORTVERSION= 2.2.0.0
PORTREVISION= 2
CATEGORIES= devel
MAINTAINER= bofh@FreeBSD.org
COMMENT= DOT NET library for the Google Data API
LICENSE= APACHE20
BUILD_DEPENDS= ${LOCALBASE}/libdata/pkgconfig/Newtonsoft.Json.pc:devel/newtonsoft-json
NUGET_DEPENDS= nunit.framework=2.63.0
USE_GITHUB= yes
GH_ACCOUNT= google
GH_TAGNAME= edcd096379
USES= dos2unix gmake mono:nuget pathfix
+NUGET_LAYOUT= flat
PATHFIX_MAKEFILEIN= Makefile
WRKSRC_SUBDIR= clients/cs
DOS2UNIX_FILES= ${WRKSRC}/Makefile ${WRKSRC}/misc/gdata-sharp-core.pc.in
MAKE_ARGS= CSC=${LOCALBASE}/bin/csc SN=${LOCALBASE}/bin/sn
NO_ARCH= yes
post-patch:
@${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' -Ee 's|(-keyfile:(.*))|\1 -delaysign+\'$$'\n'$$'\t''$$(SN) -R $$@ \2|g' ${WRKSRC}/Makefile
post-install:
cd ${STAGEDIR}${PREFIX}; ${FIND} lib/mono libdata/pkgconfig \
\( -type f -or -type l \) | ${SORT} >> ${TMPPLIST}
.include
Index: head/games/openra/Makefile
===================================================================
--- head/games/openra/Makefile (revision 473598)
+++ head/games/openra/Makefile (revision 473599)
@@ -1,79 +1,80 @@
# $FreeBSD$
PORTNAME= openra
PORTVERSION= 20180307
DISTVERSIONPREFIX= release-
PORTREVISION= 4
CATEGORIES= games
MASTER_SITES= https://github.com/${GH_ACCOUNT}/SDL2-CS/releases/download/20161223/:SDL2_CS \
https://github.com/${GH_ACCOUNT}/OpenAL-CS/releases/download/20151227/:OpenAL_CS \
https://github.com/${GH_ACCOUNT}/Eluant/releases/download/20160124/:Eluant \
https://geolite.maxmind.com/download/geoip/database/:GeoLite2
DISTFILES= SDL2-CS.dll:SDL2_CS \
SDL2-CS.dll.config:SDL2_CS \
OpenAL-CS.dll:OpenAL_CS \
OpenAL-CS.dll.config:OpenAL_CS \
Eluant.dll:Eluant \
GeoLite2-Country_20180605${EXTRACT_SUFX}:GeoLite2
EXTRACT_ONLY= ${DISTFILES:C/:.*//:N*.config:N*.dll:N*.nupkg}
MAINTAINER= jbeich@FreeBSD.org
COMMENT= Multiplayer re-envisioning of early RTS games by Westwood Studios
LICENSE= GPLv3
LIB_DEPENDS= libfreetype.so:print/freetype2 \
libgdiplus.so:x11-toolkits/libgdiplus
NUGET_DEPENDS= FuzzyLogicLibrary=1.2.0 \
MaxMind.Db=2.0.0 \
NUnit=3.0.1 \
NUnit.Console=3.0.1 \
- Open.Nat=2.1.0 \
+ Open.NAT=2.1.0 \
SharpFont=4.0.1 \
SharpZipLib=0.86.0 \
StyleCop.MSBuild=4.7.49.0 \
StyleCopPlus.MSBuild=4.7.49.5 \
rix0rrr.BeaconLib=1.0.1
USE_GITHUB= yes
GH_PROJECT= OpenRA
NO_ARCH= yes
USES= desktop-file-utils gmake lua:51,run mono:nuget openal:soft \
shared-mime-info shebangfix
USE_SDL= sdl2
+NUGET_LAYOUT= flat
NUGET_PACKAGEDIR=${WRKSRC}/thirdparty/download
SHEBANG_FILES= launch-dedicated.sh
MAKE_ENV= prefix="${PREFIX}" mandir="${PREFIX}/man" \
gameinstalldir="${DATADIR}"
MAKE_ARGS= VERSION="${GH_TAGNAME}"
ALL_TARGET= all
INSTALL_TARGET= install install-man-page \
install-linux-mime install-linux-shortcuts
PORTDATA= *
OPTIONS_DEFINE= TEST
TEST_MAKE_ENV= HOME="${WRKDIR}"
TEST_ALL_TARGET=test
post-extract:
${CP} ${DISTFILES:C/:.*//:N*.nupkg:N*.tar*:S,^,${_DISTDIR}/,} \
${WRKDIR}/GeoLite2-*/*.mmdb \
${NUGET_PACKAGEDIR}
${GZIP_CMD} ${NUGET_PACKAGEDIR}/*.mmdb
post-patch:
${REINPLACE_CMD} \
-e '/echo/!s/ @/ /' \
-e '/^mods:/s/$$/ version/' \
${WRKSRC}/Makefile
${REINPLACE_CMD} -e '/noget\.sh/d' \
${WRKSRC}/thirdparty/fetch-thirdparty-deps.sh
${FIND} -L ${WRKSRC}/thirdparty -name '*.config*' -exec ${REINPLACE_CMD} \
-i '.bak.os' -e '/${OPSYS:tl}/d; /linux/{ p; s//${OPSYS:tl}/; }' {} +
${SED} 's/@LIBLUA51@/liblua-${LUA_VER}.so/' \
${WRKSRC}/thirdparty/Eluant.dll.config.in \
>${WRKSRC}/Eluant.dll.config
.include