Changeset View
Changeset View
Standalone View
Standalone View
Mk/Uses/mono.mk
Show First 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | |||||
# PAKET_DEPENDS The list of nuget packages from a nuget feed. The | # PAKET_DEPENDS The list of nuget packages from a nuget feed. The | ||||
# version used needs to be resolved (unlike how paket | # version used needs to be resolved (unlike how paket | ||||
# works). The format is: | # works). The format is: | ||||
# ${name}=${version} | # ${name}=${version} | ||||
.if !defined(_INCLUDE_USES_MONO_MK) | .if !defined(_INCLUDE_USES_MONO_MK) | ||||
_INCLUDE_USES_MONO_MK= yes | _INCLUDE_USES_MONO_MK= yes | ||||
.if !empty(mono_ARGS:Nnuget:Nbuild) | . if !empty(mono_ARGS:Nnuget:Nbuild) | ||||
IGNORE= USES=mono only supports optional arguments nuget and build | IGNORE= USES=mono only supports optional arguments nuget and build | ||||
.endif | . endif | ||||
# Set the location of the .wapi directory so we write to a location we | # Set the location of the .wapi directory so we write to a location we | ||||
# can always assume to be writable. | # can always assume to be writable. | ||||
MONO_SHARED_DIR= ${WRKDIR} | MONO_SHARED_DIR= ${WRKDIR} | ||||
CONFIGURE_ENV+= MONO_SHARED_DIR="${MONO_SHARED_DIR}" | CONFIGURE_ENV+= MONO_SHARED_DIR="${MONO_SHARED_DIR}" | ||||
MAKE_ENV+= MONO_SHARED_DIR="${MONO_SHARED_DIR}" TZ=UTC | MAKE_ENV+= MONO_SHARED_DIR="${MONO_SHARED_DIR}" TZ=UTC | ||||
BUILD_DEPENDS+= mono:lang/mono | BUILD_DEPENDS+= mono:lang/mono | ||||
.if empty(mono_ARGS:Mbuild) | . if empty(mono_ARGS:Mbuild) | ||||
RUN_DEPENDS+= mono:lang/mono | RUN_DEPENDS+= mono:lang/mono | ||||
.endif | . endif | ||||
# Set the location that webaps served by XSP should use. | # Set the location that webaps served by XSP should use. | ||||
XSP_DOCROOT= ${PREFIX}/www/xsp | XSP_DOCROOT= ${PREFIX}/www/xsp | ||||
# gac utilities | # gac utilities | ||||
GACUTIL=${LOCALBASE}/bin/gacutil /root ${PREFIX}/lib/ /gacdir ${PREFIX}/lib | GACUTIL=${LOCALBASE}/bin/gacutil /root ${PREFIX}/lib/ /gacdir ${PREFIX}/lib | ||||
GACUTIL_INSTALL=${GACUTIL} /i | GACUTIL_INSTALL=${GACUTIL} /i | ||||
GACUTIL_INSTALL_PACKAGE=${GACUTIL} /i /package 1.0 /package 2.0 | GACUTIL_INSTALL_PACKAGE=${GACUTIL} /i /package 1.0 /package 2.0 | ||||
.if ${mono_ARGS:Mnuget} | . if ${mono_ARGS:Mnuget} | ||||
MAKE_ENV+= NUGET_PACKAGES=${NUGET_PACKAGEDIR} | MAKE_ENV+= NUGET_PACKAGES=${NUGET_PACKAGEDIR} | ||||
# TODO: add nuget as a Port, use it for makenupkg | # TODO: add nuget as a Port, use it for makenupkg | ||||
NUGET_EXE?= ${WRKDIR}/nuget.exe | NUGET_EXE?= ${WRKDIR}/nuget.exe | ||||
NUGET_LATEST_URL?= https://dist.nuget.org/win-x86-commandline/latest/nuget.exe | NUGET_LATEST_URL?= https://dist.nuget.org/win-x86-commandline/latest/nuget.exe | ||||
_NUGET_PACKAGEDIR= ${WRKDIR}/.nuget/packages | _NUGET_PACKAGEDIR= ${WRKDIR}/.nuget/packages | ||||
NUGET_PACKAGEDIR?= ${WRKSRC}/packages | NUGET_PACKAGEDIR?= ${WRKSRC}/packages | ||||
NUGET_LAYOUT?= legacy | NUGET_LAYOUT?= legacy | ||||
NUGET_FEEDS?= NUGET | NUGET_FEEDS?= NUGET | ||||
NUGET_URL?= https://api.nuget.org/v3-flatcontainer/ | NUGET_URL?= https://api.nuget.org/v3-flatcontainer/ | ||||
NUGET_VERSION?= v3 | NUGET_VERSION?= v3 | ||||
PAKET_PACKAGEDIR?= | PAKET_PACKAGEDIR?= | ||||
PAKET_DEPENDS?= | PAKET_DEPENDS?= | ||||
NUGET_DEPENDS?= ${PAKET_DEPENDS} | NUGET_DEPENDS?= ${PAKET_DEPENDS} | ||||
. for feed in ${NUGET_FEEDS} | . for feed in ${NUGET_FEEDS} | ||||
${feed}_DEPENDS?= | ${feed}_DEPENDS?= | ||||
${feed}_FILE?= ${PKGDIR}/nupkg-${feed:tl} | ${feed}_FILE?= ${PKGDIR}/nupkg-${feed:tl} | ||||
${feed}_URL?= https://dotnet.myget.org/F/${feed:tl:S/_/-/g}/api/v2/ | ${feed}_URL?= https://dotnet.myget.org/F/${feed:tl:S/_/-/g}/api/v2/ | ||||
${feed}_VERSION?= v2 | ${feed}_VERSION?= v2 | ||||
. if exists(${${feed}_FILE}) | . if exists(${${feed}_FILE}) | ||||
${feed}_EXTRA!= ${CAT} ${${feed}_FILE} | ${feed}_EXTRA!= ${CAT} ${${feed}_FILE} | ||||
. else | . else | ||||
${feed}_EXTRA= | ${feed}_EXTRA= | ||||
. endif | . endif | ||||
MAKENUPKG_ENV+= ${feed:tl}_URL="${${feed}_URL}" ${feed:tl}_VERSION="${${feed}_VERSION}" | MAKENUPKG_ENV+= ${feed:tl}_URL="${${feed}_URL}" ${feed:tl}_VERSION="${${feed}_VERSION}" | ||||
. for depend in ${${feed}_DEPENDS} ${${feed}_EXTRA} | . for depend in ${${feed}_DEPENDS} ${${feed}_EXTRA} | ||||
. if empty(_NUGET_DEPENDS:M${depend}) | . if empty(_NUGET_DEPENDS:M${depend}) | ||||
id= ${depend:C/=.*$//} | id= ${depend:C/=.*$//} | ||||
version= ${depend:C/^.*=//} | version= ${depend:C/^.*=//} | ||||
group= nuget_${depend:C/[.+=-]//g} | group= nuget_${depend:C/[.+=-]//g} | ||||
nupkg= ${id:tl}.${version}.nupkg | nupkg= ${id:tl}.${version}.nupkg | ||||
DISTFILES_${group}:= ${nupkg}:${group} | DISTFILES_${group}:= ${nupkg}:${group} | ||||
. if ${${feed}_VERSION} == v2 | . if ${${feed}_VERSION} == v2 | ||||
MASTER_SITES_${group}:= ${${feed}_URL}package/${id}/${version}?dummy=/:${group} | MASTER_SITES_${group}:= ${${feed}_URL}package/${id}/${version}?dummy=/:${group} | ||||
. else | . else | ||||
MASTER_SITES_${group}:= ${${feed}_URL}${id:tl}/${version}/:${group} | MASTER_SITES_${group}:= ${${feed}_URL}${id:tl}/${version}/:${group} | ||||
. endif | . endif | ||||
NUGET_NUPKGS_${group}:= ${nupkg}:${depend} | NUGET_NUPKGS_${group}:= ${nupkg}:${depend} | ||||
NUPKGS_${id}:= ${NUPKGS_${id}} ${version} | NUPKGS_${id}:= ${NUPKGS_${id}} ${version} | ||||
DISTFILES+= ${DISTFILES_nuget_${depend:S/.//g:S/-//g:S/=//g}} | DISTFILES+= ${DISTFILES_nuget_${depend:S/.//g:S/-//g:S/=//g}} | ||||
MASTER_SITES+= ${MASTER_SITES_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_NUPKGS+= ${NUGET_NUPKGS_nuget_${depend:S/.//g:S/-//g:S/=//g}} | ||||
_NUGET_DEPENDS+= ${depend} | _NUGET_DEPENDS+= ${depend} | ||||
. endif | . endif | ||||
. endfor | . endfor | ||||
. endfor | . endfor | ||||
EXTRACT_ONLY?= ${_DISTFILES:N*.nupkg} | EXTRACT_ONLY?= ${_DISTFILES:N*.nupkg} | ||||
_USES_extract+= 600:nuget-extract | _USES_extract+= 600:nuget-extract | ||||
nuget-extract: | nuget-extract: | ||||
@${MKDIR} ${_NUGET_PACKAGEDIR} ${PAKET_PACKAGEDIR} | @${MKDIR} ${_NUGET_PACKAGEDIR} ${PAKET_PACKAGEDIR} | ||||
. for nupkg in ${NUGET_NUPKGS} | . for nupkg in ${NUGET_NUPKGS} | ||||
@${MKDIR} ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|} | @${MKDIR} ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|} | ||||
@tar -xf ${DISTDIR}/${nupkg:C/:.*$//} -C ${_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 \ | -s/%2B/\+/g -s/%2B/\+/g -s/%2B/\+/g \ | ||||
--exclude '\[Content_Types\].xml' \ | --exclude '\[Content_Types\].xml' \ | ||||
--exclude package/ \ | --exclude package/ \ | ||||
--exclude _rels/ | --exclude _rels/ | ||||
@${MV} ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}/${nupkg:C/^.*://:C/=.*//}.nuspec \ | @${MV} ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}/${nupkg:C/^.*://:C/=.*//}.nuspec \ | ||||
${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}/${nupkg:tl: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 | @${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" \ | @openssl dgst -sha512 -binary ${DISTDIR}/${nupkg:C/:.*$//} | openssl enc -base64 | ${TR} -d "\n" \ | ||||
> ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}/${nupkg:tl:C/^.*://:S/=/./}.nupkg.sha512 | > ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}/${nupkg:tl:C/^.*://:S/=/./}.nupkg.sha512 | ||||
. if ${NUGET_LAYOUT} == legacy | . 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/^.*://:S|=|.|}/ | ||||
@${CP} -a ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}/ ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:C|=.*||}/ | @${CP} -a ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}/ ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:C|=.*||}/ | ||||
. if ${nupkg} != ${nupkg:tl} | . if ${nupkg} != ${nupkg:tl} | ||||
@(cd ${_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/^.*://:C/=.*//}.nuspec ${nupkg:C/^.*://:C/=.*//}.nuspec; \ | ||||
${MV} ${nupkg:tl:C/^.*://:S/=/./}.nupkg ${nupkg:C/^.*://:S/=/./}.nupkg; \ | ${MV} ${nupkg:tl:C/^.*://:S/=/./}.nupkg ${nupkg:C/^.*://:S/=/./}.nupkg; \ | ||||
${MV} ${nupkg:tl:C/^.*://:S/=/./}.nupkg.sha512 ${nupkg:C/^.*://:S/=/./}.nupkg.sha512) | ${MV} ${nupkg:tl:C/^.*://:S/=/./}.nupkg.sha512 ${nupkg:C/^.*://:S/=/./}.nupkg.sha512) | ||||
@(cd ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S|=|.|}; \ | @(cd ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:S|=|.|}; \ | ||||
${MV} ${nupkg:tl:C/^.*://:C/=.*//}.nuspec ${nupkg:C/^.*://:C/=.*//}.nuspec; \ | ${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 ${nupkg:C/^.*://:S/=/./}.nupkg; \ | ||||
${MV} ${nupkg:tl:C/^.*://:S/=/./}.nupkg.sha512 ${nupkg:C/^.*://:S/=/./}.nupkg.sha512) | ${MV} ${nupkg:tl:C/^.*://:S/=/./}.nupkg.sha512 ${nupkg:C/^.*://:S/=/./}.nupkg.sha512) | ||||
. endif | . endif | ||||
. elif ${NUGET_LAYOUT} == flat | . elif ${NUGET_LAYOUT} == flat | ||||
@${CP} -a ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}/ ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:C|=.*||}/ | @${CP} -a ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}/ ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:C|=.*||}/ | ||||
@${RM} -r ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|} | @${RM} -r ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|} | ||||
. if ${nupkg} != ${nupkg:tl} | . if ${nupkg} != ${nupkg:tl} | ||||
@${CP} -a ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:C|=.*||}/ ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:C|=.*||}/ | @${CP} -a ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:C|=.*||}/ ${_NUGET_PACKAGEDIR}/${nupkg:C/^.*://:C|=.*||}/ | ||||
@(cd ${_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/^.*://:C/=.*//}.nuspec ${nupkg:C/^.*://:C/=.*//}.nuspec; \ | ||||
${MV} ${nupkg:tl:C/^.*://:S/=/./}.nupkg ${nupkg:C/^.*://:S/=/./}.nupkg; \ | ${MV} ${nupkg:tl:C/^.*://:S/=/./}.nupkg ${nupkg:C/^.*://:S/=/./}.nupkg; \ | ||||
${MV} ${nupkg:tl:C/^.*://:S/=/./}.nupkg.sha512 ${nupkg:C/^.*://:S/=/./}.nupkg.sha512) | ${MV} ${nupkg:tl:C/^.*://:S/=/./}.nupkg.sha512 ${nupkg:C/^.*://:S/=/./}.nupkg.sha512) | ||||
. endif | . endif | ||||
. endif | . endif | ||||
. endfor | . endfor | ||||
@${RLN} ${_NUGET_PACKAGEDIR} ${NUGET_PACKAGEDIR} | @${RLN} ${_NUGET_PACKAGEDIR} ${NUGET_PACKAGEDIR} | ||||
@${TOUCH} ${WRKDIR}/.nuget-sentinal | @${TOUCH} ${WRKDIR}/.nuget-sentinal | ||||
_USES_extract+= 601:paket-extract | _USES_extract+= 601:paket-extract | ||||
paket-extract: | paket-extract: | ||||
. for nupkg in ${PAKET_DEPENDS} | . for nupkg in ${PAKET_DEPENDS} | ||||
@${RLN} ${_NUGET_PACKAGEDIR}/${nupkg:tl:S|=|/|} ${PAKET_PACKAGEDIR}/${nupkg:C/=.*//} | @${RLN} ${_NUGET_PACKAGEDIR}/${nupkg:tl:S|=|/|} ${PAKET_PACKAGEDIR}/${nupkg:C/=.*//} | ||||
@(cd ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}; \ | @(cd ${_NUGET_PACKAGEDIR}/${nupkg:tl:C/^.*://:S|=|/|}; \ | ||||
${CP} ${nupkg:tl:C/^.*://:C/=.*//}.nuspec ${nupkg:C/^.*://:C/=.*//}.nuspec; \ | ${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 ${nupkg:C/^.*://:S/=/./}.nupkg; \ | ||||
${CP} ${nupkg:tl:C/^.*://:S/=/./}.nupkg.sha512 ${nupkg:C/^.*://:S/=/./}.nupkg.sha512) | ${CP} ${nupkg:tl:C/^.*://:S/=/./}.nupkg.sha512 ${nupkg:C/^.*://:S/=/./}.nupkg.sha512) | ||||
. endfor | . endfor | ||||
.endif | . endif | ||||
makenuget: patch | makenuget: patch | ||||
@${FIND} ${WRKSRC} -name packages.config | \ | @${FIND} ${WRKSRC} -name packages.config | \ | ||||
${XARGS} ${SED} -nE 's|.*<package id="([^"]+)" version="([^"]+)"[^/]*/>.*|\1=\2|gp' | \ | ${XARGS} ${SED} -nE 's|.*<package id="([^"]+)" version="([^"]+)"[^/]*/>.*|\1=\2|gp' | \ | ||||
${SORT} -u | \ | ${SORT} -u | \ | ||||
${SED} \ | ${SED} \ | ||||
-e '1s|^|NUGET_DEPENDS= |' \ | -e '1s|^|NUGET_DEPENDS= |' \ | ||||
-e '2,$$s|^| |g' \ | -e '2,$$s|^| |g' \ | ||||
Show All 26 Lines |