freebsd-ports/Mk/Uses/mono.mk
David Naylor 4a9609d5d3 USES=mono: simplify EXTRACT_ONLY, fix nuget-extract [1]
- Instead of excluding the specific packages added to DISTFILES (but only for
   FreeBSD 9+), exclude all files with a '.nupkg' extension.
 - Move the nuget-extract command to be before post-extract, to allow the port's
   post-extract command to move packages around

audio/libgpod-sharp: add port for mono bindings for libgpod
 - audio/libgpod: [2]
   - USE_GNOME: add missing dependency
   - Remove mono files from pkg-plist (now in audio/libgpod-sharp)
   - Allow relevant variables to be overridden
   - Fix MONO options
   - Patch source to allow building with modern mono
   - Avoid post-install target for slave ports.

devel/monodevelop: update to 4.6.2.7
 - Update nuget package Fantomas to 2.4.0 (latest at time of monodevelop's
   release).
 - Downgrade nuget package FSharp.Compiler.CodeDom (per paket's specification)
 - LICENSE: Add license of LGPL21
 - LICENSE_FILE: Add license file from source
 - PORTSCOUT: Avoid checking alpha releases (aka x.y.0.z releases)

games/openra: simplify post-extract [3]
 - USES=mono:nuget allow overridding of NUGET_PACKAGEDIR
 - Set NUGET_PACKAGEDIR to correct location, fix patching accordingly

lang/fsharp: update to 4.6.2.7
 ChangeLog:
  - Fix #639: Problems with F# scripts on Mono
  - Fix FSharp.Compiler.Tools targets for .NET Core usage
  - Fix FSharp.Compiler.Tools package dependencies

lang/mono: update to 4.6.2.7
 Mono 4.6.2 is the 1st service release to the 4.6 series.
 Changes:
  - LICENSE: Add license of MIT
  - LICENSE_FILE: Add license file from source
  - PORTSCOUT: Avoid checking alpha releases (aka x.y.0.z releases)
 Bug fixes:
  - #44708 - "TrustFailure (The authentication or decryption has failed.) ...
            Invalid certificate received from server." with "Error code: 0x5"
            or "Error code: 0xffffffff800b010f" when attempting to access
            HTTPS servers on ports other than 443
  - #39832 - SIGSEGV when running roslyn

multimedia/banshee: bump port revision.
 - Update missing port dependencies
 - Convert to use option helpers
 - OPTIONS: Add APPLEDEV (missing dependency added)
 - LICENSE: Add MIT license
 - LICENSE_FILE: Add license file from source
 - PORTSCOUT: Skip alpha release (2.9.1)

x11-toolkits/gnome-sharp20: fix port dependencies
 - Add missing dependencies
 - Convert post-patch to shebangfix
 - LICENSE: add LGPL21 license
 - LICENSE_FILE: use license file from source
 - MKAE_JOBS_UNSAFE: remove, does appear to work

x11-toolkits/gtk-sharp20: update to 2.12.42.

PR:		214680 [2]
PR:		214681
Suggested by:	jbeich [1]
Submitted by:	jbeich [3]
Approved by:	avilla (maintainer; timeout) [2]
2016-11-27 17:00:08 +00:00

98 lines
2.8 KiB
Makefile

# $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. The
# variables NUGET_DEPENDS needs to be set with the names,
# versions and optionally the port origin of the nuget
# packages in the format:
# ${name}=${version}(:${PKGORIGIN})
#
# 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.
#
# Variables overrideable by the port:
#
# NUGET_PACKAGEDIR The directory in which the port expects the
# nuget packages to be available
# default: ${WRKSRC}/packages
.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}
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
DISTFILES_${group}:= ${nupkg}:${group}
MASTER_SITES_${group}:= https://www.nuget.org/api/v2/package/${id}/${version}?dummy=/:${group}
NUGET_NUPKGS_${group}:= ${nupkg}:${depend}
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
EXTRACT_ONLY?= ${_DISTFILES:N*.nupkg}
_USES_extract+= 600: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