[Midnightbsd-cvs] mports [23191] trunk/Mk/extensions/mono.mk: add nuget
laffer1 at midnightbsd.org
laffer1 at midnightbsd.org
Sat Apr 21 17:23:10 EDT 2018
Revision: 23191
http://svnweb.midnightbsd.org/mports/?rev=23191
Author: laffer1
Date: 2018-04-21 17:23:09 -0400 (Sat, 21 Apr 2018)
Log Message:
-----------
add nuget
Modified Paths:
--------------
trunk/Mk/extensions/mono.mk
Modified: trunk/Mk/extensions/mono.mk
===================================================================
--- trunk/Mk/extensions/mono.mk 2018-04-21 01:18:10 UTC (rev 23190)
+++ trunk/Mk/extensions/mono.mk 2018-04-21 21:23:09 UTC (rev 23191)
@@ -4,14 +4,15 @@
# mono (c#) support
#
# Feature: mono
-# Usage: USES=mono
+# Usage: USES=mono:ARGS
+# Valid ARGS: nuget
#
.if !defined(_INCLUDE_USES_MONO_MK)
_INCLUDE_USES_MONO_MK= yes
-.if !empty(mono_ARGS)
-IGNORE= USES=mono takes no arguments
+.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
@@ -19,8 +20,8 @@
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:${PORTSDIR}/lang/mono
-RUN_DEPENDS+= mono:${PORTSDIR}/lang/mono
+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
@@ -30,4 +31,54 @@
GACUTIL_INSTALL=${GACUTIL} /i
GACUTIL_INSTALL_PACKAGE=${GACUTIL} /i /package 1.0 /package 2.0
+.if ${mono_ARGS:Mnuget}
+NUGET_PACKAGEDIR= ${WRKSRC}/packages
+
+. for depend in ${NUGET_DEPENDS}
+id= ${depend:C/=.*$//}
+version= ${depend:C/^.*=//}
+group= nuget_${id:S/.//g:S/-//g}
+nupkg= ${id:tl}.${version}.nupkg
+NUPKG_${group}:= ${nupkg}
+DISTFILES_${group}:= ${nupkg}:${group}
+MASTER_SITES_${group}:= https://www.nuget.org/api/v2/package/${id}/${version}?dummy=/:${group}
+NUGET_NUPKGS_${group}:= ${nupkg}:${depend}
+
+NUGET_DISTFILES+=${NUPKG_nuget_${depend:C/=.*$//:S/.//g:S/-//g}}
+DISTFILES+= ${DISTFILES_nuget_${depend:C/=.*$//:S/.//g:S/-//g}}
+MASTER_SITES+= ${MASTER_SITES_nuget_${depend:C/=.*$//:S/.//g:S/-//g}}
+NUGET_NUPKGS+= ${NUGET_NUPKGS_nuget_${depend:C/=.*$//:S/.//g:S/-//g}}
+. endfor
+
+# Prevent the nuget packages from being extracted (and poluting ${WRKDIR}, however
+# only bmake supports this.
+. if !defined(EXTRACT_ONLY) && defined(.PARSEDIR)
+EXTRACT_ONLY= ${_DISTFILES:[0]:C/${NUGET_DISTFILES}//g}
+. endif
+
+pre-extract: nuget-extract
+
+_USES_extract+= 900:nuget-extract
+nuget-extract:
+. for nupkg in ${NUGET_NUPKGS}
+ @${MKDIR} ${NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S/=/./}
+ @${LN} -s ${NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S/=/./} ${NUGET_PACKAGEDIR}/${nupkg:C/^.*://:C/=.*//}
+ @tar -xf ${DISTDIR}/${nupkg:C/:.*$//} -C ${NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S/=/./} \
+ -s/%2B/\+/g -s/%2B/\+/g -s/%2B/\+/g \
+ --exclude '\[Content_Types\].xml' \
+ --exclude package/ \
+ --exclude _rels/
+. endfor
.endif
+
+makenuget: patch
+ @${FIND} ${WRKSRC} -name packages.config | \
+ ${XARGS} ${SED} -nE 's|.*<package id="([^"]+)" version="([^"]+)"[^/]*/>.*|\1-\2|gp' | \
+ ${SORT} -u | \
+ ${SED} \
+ -e '1s|^|NUGET_DEPENDS= |' \
+ -e '2,$$s|^| |g' \
+ -e '$$!s|$$| \\|g'
+
+.endif
+
More information about the Midnightbsd-cvs
mailing list