aboutsummaryrefslogtreecommitdiff
blob: 22770b682d82328a1421862bc1b26c073bd4dce3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=6

USE_DOTNET="net45"
inherit mono-env gac nupkg versionator

IUSE="${USE_DOTNET} developer nupkg debug"

NAME="Eto.Parse"
HOMEPAGE="https://github.com/picoe/${NAME}"

EGIT_COMMIT="7d7884fb4f481e28dd24bc273fbd6615d0ba539a" # 2015-09-07
SRC_URI="${HOMEPAGE}/archive/${EGIT_COMMIT}.zip -> ${PN}-${PV}.zip"
RESTRICT="mirror"
S="${WORKDIR}/${NAME}-${EGIT_COMMIT}"

SLOT="0"

DESCRIPTION="CLI parser with API, recursive descent, LL(k), for BNF, EBNF and Gold Grammars"
LICENSE="MIT" # https://raw.githubusercontent.com/picoe/Eto.Parse/master/LICENSE
KEYWORDS="~amd64 ~x86"

# notes on testing, from https://devmanual.gentoo.org/ebuild-writing/functions/src_test/index.html
# FEATURES+="test"

# there is no "test" in IUSE, because test project and solution are not build
# there is no "gac" in IUSE, because utilities for patching are not ready
# "Failure adding assembly Eto.Parse/bin/Release/net40/Eto.Parse.dll to the cache: Attempt to install an assembly without a strong name"

# notes from https://devmanual.gentoo.org/general-concepts/dependencies/
# DEPEND - dependencies which are required to unpack, patch, compile or install the package
# RDEPEND - dependencies which are required at runtime

COMMON_DEPENDENCIES=">=dev-lang/mono-4.2
	nupkg? ( dev-dotnet/nuget )
	"
DEPEND="${COMMON_DEPENDENCIES}
	"
#	test? ( >=dev-util/nunit-2.6.4-r201501110:2[nupkg] )
RDEPEND="${COMMON_DEPENDENCIES}
	"

# Notes on Gentoo variables, from https://devmanual.gentoo.org/ebuild-writing/variables/
# PN = Package name, for example vim.
# PV = Package version (excluding revision, if any), for example 6.3.
# P = Package name and version (excluding revision, if any), for example vim-6.3.
# PVR = Package version and revision (if any), for example 6.3, 6.3-r1.
# PF = Full package name, ${PN}-${PVR}, for example vim-6.3-r1

S="${WORKDIR}/${NAME}-${EGIT_COMMIT}"
METAFILETOBUILD="${S}/Eto.Parse/Eto.Parse.csproj" # building .csproj instead of .sln to avoid building test projects
# NUSPEC_FILE=${FILESDIR}/nuget-2.8.3.nuspec
NUSPEC_FILE=Eto.Parse/Eto.Parse.nuspec

COMMIT_DATESTAMP_INDEX=$(get_version_component_count ${PV} )
COMMIT_DATESTAMP=$(get_version_component_range $COMMIT_DATESTAMP_INDEX ${PV} )
NUSPEC_VERSION=$(get_version_component_range 1-3)"${COMMIT_DATESTAMP//p/.}${PR//r/}"

src_prepare() {
	rm -rf "${S}/.nuget"
	# notes on escaping, from
	# https://unix.stackexchange.com/questions/32907/what-characters-do-i-need-to-escape-when-using-sed-in-a-sh-script
	# \$ is for regexps in sed - internal layer of escaping
	# \\\$ is for bash - external layer of escaping

	#change version in .nuspec

	sed -e "s/\\\$id\\\$/${NAME}/g" \
	  -e "s/\\\$version\\\$/${NUSPEC_VERSION}/g" \
	  -e "s/\\\$title\\\$/${P}/g" \
	  -e "s/\\\$author\\\$/Curtis Wensley/g" \
	  -e "s/\\\$description\\\$/${DESCRIPTION}/g" \
	  -i "${NUSPEC_FILE}" || die

	eapply "${FILESDIR}/nuspec.patch"

#	if use test; then
#
#		# ${S}/Eto.Parse.TestSpeed/packages.config
#		# Installing 'NUnit 2.6.2'.
#		# Installing 'Newtonsoft.Json 5.0.6'.
#		# Installing 'MarkdownSharp 1.13.0.0'.
#		# Installing 'ServiceStack.Text 3.9.64'.
#		# Installing 'MarkdownDeep.NET 1.5'.
#		# Successfully installed 'MarkdownSharp 1.13.0.0'.
#
#		enuget_restore "${METAFILETOBUILD}"
#	fi ;

	default
}

src_compile() {
	exbuild_strong "${METAFILETOBUILD}"
	enuspec "${NUSPEC_FILE}"
}

src_test() {
	# ebuild is not ready for testing
	# nunit-console Eto.Parse.Tests/bin/Debug/Eto.Parse.Tests.dll
	true
}

src_install() {
	DIR=""
	if use debug; then
		DIR="Debug"
	else
		DIR="Release"
	fi
	egacinstall "Eto.Parse/bin/${DIR}/net40/Eto.Parse.dll"
	einstall_pc_file "${PN}" "${PV}" "Eto.Parse"

	enupkg "${WORKDIR}/${NAME}.${NUSPEC_VERSION}.nupkg"
}