[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