commit:     f4059f02fcc47b30e4fe1b20f3a8bf996a30b86f
Author:     ArsenShnurkov <Arsen.Shnurkov <AT> gmail <DOT> com>
AuthorDate: Fri Jan 15 13:08:34 2016 +0000
Commit:     Heather Cynede <cynede <AT> gentoo <DOT> org>
CommitDate: Fri Jan 15 13:08:34 2016 +0000
URL:        https://gitweb.gentoo.org/proj/dotnet.git/commit/?id=f4059f02

initial versionn

 .../commandlineparser-0.6.0_p20160115.ebuild       | 231 +++++++++++++++++++++
 .../files/commandlineparser.nuspec                 |  18 ++
 .../commandlineparser/files/commandlineparser.png  | Bin 0 -> 2568 bytes
 dev-dotnet/commandlineparser/metadata.xml          |  23 ++
 4 files changed, 272 insertions(+)

diff --git 
a/dev-dotnet/commandlineparser/commandlineparser-0.6.0_p20160115.ebuild 
b/dev-dotnet/commandlineparser/commandlineparser-0.6.0_p20160115.ebuild
new file mode 100644
index 0000000..d8acb6d
--- /dev/null
+++ b/dev-dotnet/commandlineparser/commandlineparser-0.6.0_p20160115.ebuild
@@ -0,0 +1,231 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6 # >=portage-2.2.25
+KEYWORDS="~x86 ~amd64"
+
+USE_DOTNET="net45"
+# debug = debug configuration (symbols and defines for debugging)
+# developer = generate symbols information (to view line numbers in stack 
traces, either in debug or release configuration)
+# test = allow NUnit tests to run
+# nupkg = create .nupkg file from .nuspec
+# gac = install into gac
+# pkg-config = register in pkg-config database
+IUSE="${USE_DOTNET} debug test +developer +aot +nupkg +gac +pkg-config"
+
+inherit nupkg
+
+HOMEPAGE="https://github.com/mgrosperrin/commandlineparser/releases";
+DESCRIPTION="command line parser on System.ComponentModel.DataAnnotations"
+LICENSE="MIT"
+LICENSE_URL="https://raw.githubusercontent.com/mgrosperrin/commandlineparser/master/LICENSE";
+
+SLOT="0"
+
+# to unpack archive
+REPOSITORY_NAME="commandlineparser"
+REPOSITORY_URL="https://github.com/ArsenShnurkov/${REPOSITORY_NAME}";
+EGIT_COMMIT="2203477397a68885fdf004ae4eb2300a2d271347"
+SRC_URI="${REPOSITORY_URL}/archive/${EGIT_COMMIT}.zip -> ${P}.zip
+       mirror://gentoo/mono.snk.bz2"
+S="${WORKDIR}/${REPOSITORY_NAME}-${EGIT_COMMIT}"
+
+COMMON_DEPENDENCIES="|| ( >=dev-lang/mono-4.2 <dev-lang/mono-9999 )"
+RDEPEND="${COMMON_DEPENDENCIES}
+"
+DEPEND="${COMMON_DEPENDENCIES}
+"
+
+METAFILETOBUILD=MGR.CommandLineParser.linux.sln
+
+NUSPEC_FILENAME="commandlineparser.nuspec"
+NUSPEC_ID="${REPOSITORY_NAME}"
+COMMIT_DATE_INDEX=$(get_version_component_count ${PV} )
+COMMIT_DATE=$(get_version_component_range $COMMIT_DATE_INDEX ${PV} )
+NUSPEC_VERSION=$(get_version_component_range 1-3)"${COMMIT_DATE//p/.}${PR//r/}"
+ICON_FILENAME=commandlineparser.png
+ICON_FINALNAME=${NUSPEC_ID}.${NUSPEC_VERSION}.png
+ICON_PATH=$(get_nuget_trusted_icons_location)/${ICON_FINALNAME}
+
+# https://devmanual.gentoo.org/ebuild-writing/functions/pkg_setup/
+# https://devmanual.gentoo.org/ebuild-writing/functions/index.html
+# pkg_setup is executed before both - src_unpack (for source ebuilds) and 
pkg_preinst (for binary ebuilds)
+pkg_setup() {
+       addwrite "/usr/share/.mono/keypairs"
+       mozroots --import --sync --machine
+
+       # some kind of "default" from "detnet.eclass"
+       # 
https://github.com/gentoo/dotnet/blob/master/eclass/dotnet.eclass#L42-L78
+       dotnet_pkg_setup
+}
+
+src_unpack()
+{
+       default
+       # delete untrusted executables
+       find "${S}" -iname "*.exe" -delete || die
+       find "${S}" -iname "*.dll" -delete || die
+}
+
+src_prepare() {
+       # TODO: disable package restore in .csproj file
+       # see 
http://bartwullems.blogspot.ru/2012/08/disable-nuget-package-restore.html
+
+       # replace package versions in projects
+       # for example 2.6.2 -> 2.6.4 (for NUnit)
+
+       # prepare nuspec file
+       elog "${S}/${NUSPEC_FILENAME}"
+       cp "${FILESDIR}/${NUSPEC_FILENAME}" "${S}/${NUSPEC_FILENAME}" || die
+       patch_nuspec_file "${S}/${NUSPEC_FILENAME}"
+
+       # restore dependencies from local repository
+       # EnableNuGetPackageRestore somehow implied to be used by exbuild
+       # export EnableNuGetPackageRestore="true"
+       enuget_restore "${METAFILETOBUILD}"
+
+       # prepare sources for signing
+       if use gac; then
+               find . -iname "*.csproj" -print0 | xargs -0 \
+               sed -i 's/<DefineConstants>/<DefineConstants>SIGNED;/g' || die
+               #PUBLIC_KEY=`sn -q -p ${SNK_FILENAME} /dev/stdout | hexdump -e 
'"%02x"'`
+               #find . -iname "AssemblyInfo.cs" -print0 | xargs -0 sed -i 
"s/PublicKey=[0-9a-fA-F]*/PublicKey=${PUBLIC_KEY}/g" || die
+               find . -iname "AssemblyInfo.cs" -print0 | xargs -0 sed -i 
"/InternalsVisibleTo/d" || die
+       fi
+
+       if !use test ; then
+               : ; # todo: remove tests from solution
+       fi
+
+       # apply user patches
+       default
+}
+
+src_configure() {
+       default
+}
+
+# rm -rf /var/tmp/portage/dev-dotnet/commandlineparser-0.6.0-p20160115 && 
emerge =commandlineparser-0.6.0-p20160115
+src_compile() {
+       exbuild /p:SignAssembly=true 
"/p:AssemblyOriginatorKeyFile=${WORKDIR}/mono.snk" "${METAFILETOBUILD}"
+
+       NUSPEC_PROPS+="nuget_version=${NUSPEC_VERSION};"
+       NUSPEC_PROPS+="nuget_id=${NUSPEC_ID};"
+       NUSPEC_PROPS+="nuget_projectUrl=${HOMEPAGE};"
+       NUSPEC_PROPS+="nuget_licenseUrl=${LICENSE_URL};"
+       NUSPEC_PROPS+="nuget_description=${DESCRIPTION};"
+       NUSPEC_PROPS+="nuget_iconUrl=file://${ICON_PATH}"
+       elog "NUSPEC_PROPS=${NUSPEC_PROPS}"
+       enuspec -Prop "${NUSPEC_PROPS}" "${S}/${NUSPEC_FILENAME}"
+
+       if use aot; then
+               if use debug; then
+                       DIR="Debug"
+               else
+                       DIR="Release"
+               fi
+               # Could not load file or assembly or one of its dependencies.
+               # assembly:NuGet.Core, Version=2.8.7.0, Culture=neutral, 
PublicKeyToken=null type:<unknown type> member:<none>.
+               # Run with MONO_LOG_LEVEL=debug for more information.
+               einfo 'mono --aot -O=all 
"src/MGR.CommandLineParser/obj/${DIR}/MGR.CommandLineParser.dll"'
+               mono --aot -O=all 
"src/MGR.CommandLineParser/obj/${DIR}/MGR.CommandLineParser.dll" || die
+       fi
+}
+
+src_test() {
+       default
+       if use debug; then
+               DIR="Debug"
+       else
+               DIR="Release"
+       fi
+       #/usr/bin/nunit264 
"${S}/src/MGR.CommandLineParser.Tests/obj/${DIR}/MGR.CommandLineParser.Tests.dll"
 || die
+}
+
+src_install() {
+       if use debug; then
+               DIR="Debug"
+       else
+               DIR="Release"
+       fi
+
+       #nongac install
+       #insinto "/usr/$(get_libdir)/${PN}/"
+       #doins src/MGR.CommandLineParser/obj/${DIR}/MGR.CommandLineParser.dll
+       #if use developer; then
+       #       "doins 
src/MGR.CommandLineParser/obj/${DIR}/MGR.CommandLineParser.dll.mdb"
+       #fi
+
+       # gac install
+       if use gac; then
+               # Failure adding assembly src/Core/bin/Release/NuGet.Core.dll 
to the cache: Attempt to install an assembly without a strong name
+               elog "Installing MGR.CommandLineParser.dll into GAC"
+               egacinstall 
"src/MGR.CommandLineParser/obj/${DIR}/MGR.CommandLineParser.dll"
+       fi
+
+       # local package install
+       if use nupkg; then
+               enupkg "${WORKDIR}/${NUSPEC_ID}.${NUSPEC_VERSION}.nupkg"
+               insinto /var/calculate/remote/packages/NuGet/icons/
+               # newins - Install a miscellaneous file using the second 
argument as the name.
+               newins "${FILESDIR}/${ICON_FILENAME}" "${ICON_FINALNAME}"
+       fi
+
+       # Copy the AOT compilation result
+       if use aot; then
+               einfo "Copy the AOT compilation result"
+               insinto "/usr/$(get_libdir)/${PN}/"
+               doins 
"src/MGR.CommandLineParser/obj/${DIR}/MGR.CommandLineParser.dll.so"
+       fi
+
+       #install_pc_file
+}
+
+patch_nuspec_file()
+{
+       if use nupkg; then
+               if use debug; then
+                       DIR="Debug"
+               else
+                       DIR="Release"
+               fi
+FILES_STRING=`cat <<-EOF || die "${DIR} files at patch_nuspec_file()"
+       <files> <!-- https://docs.nuget.org/create/nuspec-reference -->
+               <file 
src="src/MGR.CommandLineParser/bin/${DIR}/MGR.CommandLineParser.*" 
target="lib\net45\" />
+       </files>
+EOF
+`
+               einfo ${FILES_STRING}
+               replace "</package>" "${FILES_STRING}</package>" -- $1 || die 
"replace at patch_nuspec_file()"
+       fi
+}
+
+PC_FILE_NAME=${PN}
+
+install_pc_file()
+{
+       if use pkg-config; then
+               dodir /usr/$(get_libdir)/pkgconfig
+               ebegin "Installing ${PC_FILE_NAME}.pc file"
+               sed \
+                       -e "s:@LIBDIR@:$(get_libdir):" \
+                       -e "s:@PACKAGENAME@:${PC_FILE_NAME}:" \
+                       -e "s:@DESCRIPTION@:${DESCRIPTION}:" \
+                       -e "s:@VERSION@:${PV}:" \
+                       -e 
's*@LIBS@*-r:${libdir}'"/mono/${PC_FILE_NAME}/MGR.CommandLineParser.dll"'*' \
+                       <<\EOF 
>"${D}/usr/$(get_libdir)/pkgconfig/${PC_FILE_NAME}.pc" || die
+prefix=${pcfiledir}/../..
+exec_prefix=${prefix}
+libdir=${exec_prefix}/@LIBDIR@
+Name: @PACKAGENAME@
+Description: @DESCRIPTION@
+Version: @VERSION@
+Libs: @LIBS@
+EOF
+
+               einfo PKG_CONFIG_PATH="${D}/usr/$(get_libdir)/pkgconfig/" 
pkg-config --exists "${PC_FILE_NAME}"
+               PKG_CONFIG_PATH="${D}/usr/$(get_libdir)/pkgconfig/" pkg-config 
--exists "${PC_FILE_NAME}" || die ".pc file failed to validate."
+               eend $?
+       fi
+}

diff --git a/dev-dotnet/commandlineparser/files/commandlineparser.nuspec 
b/dev-dotnet/commandlineparser/files/commandlineparser.nuspec
new file mode 100644
index 0000000..6c40402
--- /dev/null
+++ b/dev-dotnet/commandlineparser/files/commandlineparser.nuspec
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd";>
+  <metadata>
+    <id>$nuget_id$</id>
+    <version>$nuget_version$</version>
+    <title>CommandLine parser</title>
+    <description>$nuget_description$</description>
+    <authors>Matthias Grosperrin</authors>
+    <language>en-US</language>
+    <projectUrl>$nuget_projectUrl$</projectUrl>
+    <iconUrl>$nuget_iconUrl$</iconUrl>
+    <licenseUrl>$nuget_licenseUrl$</licenseUrl>
+    <tags>json</tags>
+    <dependencies>
+      <group targetFramework="net45" />
+    </dependencies>
+  </metadata>
+</package>

diff --git a/dev-dotnet/commandlineparser/files/commandlineparser.png 
b/dev-dotnet/commandlineparser/files/commandlineparser.png
new file mode 100644
index 0000000..688ecaf
Binary files /dev/null and 
b/dev-dotnet/commandlineparser/files/commandlineparser.png differ

diff --git a/dev-dotnet/commandlineparser/metadata.xml 
b/dev-dotnet/commandlineparser/metadata.xml
new file mode 100644
index 0000000..b0f2685
--- /dev/null
+++ b/dev-dotnet/commandlineparser/metadata.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <herd>dotnet</herd>
+       <maintainer> <!-- https://wiki.gentoo.org/wiki/User:Cynede -->
+               <email>[email protected]</email>
+               <name>Heather Cynede</name>
+       </maintainer>
+       <upstream>
+               
<bugs-to>https://github.com/mgrosperrin/commandlineparser/issues</bugs-to>
+               <remote-id 
type="github">ArsenShnurkov/commandlineparser</remote-id>
+       </upstream>
+       <use>
+               <flag name='aot'>compile to machine code and store to disk 
during install, to save time later during startups</flag>
+               <flag name='pkg-config'>create .pc file(s) for .dll(s) 
installed to gac</flag>
+       </use>
+       <longdescription lang="en">
+               MGR.CommandLineParser is a multi-command line parser. It uses 
System.ComponentModel.DataAnnotations to declare and validate the commands.
+       </longdescription>
+       <longdescription lang="ru">
+               Библиотека для написания кода, анализирующего параметры, 
переданные из интерпретатора командной строки. Использует 
System.ComponentModel.DataAnnotations
+       </longdescription>
+</pkgmetadata>

Reply via email to