blob: d64253ac7da05098ce371bbcc0400cea7dd6f253 (
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=6 # >=portage-2.2.25
KEYWORDS="~x86 ~amd64"
RESTRICT="mirror"
USE_DOTNET="net45"
# debug = debug configuration (symbols and defines for debugging)
# test = allow NUnit tests to run
# developer = generate symbols information (to view line numbers in stack traces, either in debug or release configuration)
# aot = compile to machine code and store to disk during install, to save time later during startups
# nupkg = create .nupkg file from .nuspec
# gac = install into gac
# pkg-config = register in pkg-config database
IUSE="+${USE_DOTNET} debug +developer test +aot doc"
TOOLS_VERSION=14.0
inherit gac nupkg
get_revision()
{
git rev-list --count $2..$1
}
get_dlldir() {
echo /usr/lib64/mono/${PN}
}
NAME="mono-packaging-tools"
HOMEPAGE="https://arsenshnurkov.github.io/mono-packaging-tools"
REPOSITORY_URL="https://github.com/ArsenShnurkov/${NAME}"
EGIT_COMMIT="98dfea6ddcc47de78a59014728f823bfe773fb25"
SRC_URI="${REPOSITORY_URL}/archive/${EGIT_COMMIT}.tar.gz -> ${PN}-${PV}.tar.gz"
S="${WORKDIR}/${NAME}-${EGIT_COMMIT}"
SLOT="0"
DESCRIPTION="Command line utilities for packaging mono assemblies with portage"
LICENSE="GPL-3"
LICENSE_URL="https://raw.githubusercontent.com/ArsenShnurkov/mono-packaging-tools/master/LICENSE"
COMMON_DEPENDENCIES="|| ( >=dev-lang/mono-4.2 <dev-lang/mono-9999 )
dev-dotnet/mono-options[gac]
>=dev-dotnet/slntools-1.1.3_p201508170-r1[gac]
>=dev-dotnet/eto-parse-1.4.0[gac]
"
DEPEND="${COMMON_DEPENDENCIES}
dev-dotnet/msbuildtasks
sys-apps/sed"
RDEPEND="${COMMON_DEPENDENCIES}
"
NUSPEC_VERSION=${PV}
ASSEMBLY_VERSION=${PV}
SLN_FILE="mono-packaging-tools.sln"
METAFILETOBUILD="${S}/${SLN_FILE}"
NUSPEC_ID="${NAME}"
COMMIT_DATE_INDEX="$(get_version_component_count ${PV} )"
COMMIT_DATE="$(get_version_component_range $COMMIT_DATE_INDEX ${PV} )"
NUSPEC_FILENAME="${PN}.nuspec"
#ICON_FILENAME="${PN}.png"
#ICON_FINALNAME="${NUSPEC_ID}.${NUSPEC_VERSION}.png"
#ICON_PATH="$(get_nuget_trusted_icons_location)/${ICON_FINALNAME}"
src_prepare() {
eapply "${FILESDIR}/MSBuildExtensionsPath.patch"
#change version in .nuspec
# PV = Package version (excluding revision, if any), for example 6.3.
# It should reflect the upstream versioning scheme
sed "s/@VERSION@/${NUSPEC_VERSION}/g" "${FILESDIR}/${NUSPEC_ID}.nuspec" >"${S}/${NUSPEC_ID}.nuspec" || die
# restoring is not necessary after switching to GAC references
# enuget_restore "${METAFILETOBUILD}"
default
}
src_compile() {
exbuild_strong /p:VersionNumber="${ASSEMBLY_VERSION}" "${METAFILETOBUILD}"
enuspec "${NUSPEC_ID}.nuspec"
}
src_install() {
# install dlls
insinto "$(get_dlldir)/slot-${SLOT}"
if use debug; then
DIR="Debug"
else
DIR="Release"
fi
doins mpt-core/bin/${DIR}/mpt-core.dll
dosym slot-${SLOT}/mpt-core.dll $(get_dlldir)/mpt-core.dll
einstall_pc_file ${PN} ${ASSEMBLY_VERSION} mpt-core
insinto "/usr/share/${PN}/slot-${SLOT}"
install_tool mpt-gitmodules
install_tool mpt-sln
install_tool mpt-csproj
install_tool mpt-machine
install_tool mpt-nuget
enupkg "${WORKDIR}/${NUSPEC_ID}.${NUSPEC_VERSION}.nupkg"
if use doc; then
dodoc README.md
fi
}
pkg_prerm() {
if use gac; then
# TODO determine version for uninstall from slot-N dir
einfo "removing from GAC"
gacutil -u mpt-core
# don't die, it there is no such assembly in GAC
fi
}
pkg_postinst() {
if use gac; then
einfo "adding to GAC"
gacutil -i "$(get_dlldir)/slot-${SLOT}/mpt-core.dll" || die
fi
}
install_tool() {
if use debug; then
DIR="Debug"
else
DIR="Release"
fi
# installs .exe, .exe.config (if any), .mdb (if exists)
doins "$1"/bin/${DIR}/*.exe
if [ -f "$1"/bin/${DIR}/*.exe.config ]; then
doins "$1"/bin/${DIR}/*.exe.config
fi
if use developer; then
doins "$1"/bin/${DIR}/*.mdb
fi
MONO=/usr/bin/mono
if use debug; then
make_wrapper "$1" "${MONO} --debug /usr/share/${PN}/slot-${SLOT}/$1.exe"
else
make_wrapper "$1" "${MONO} /usr/share/${PN}/slot-${SLOT}/$1.exe"
fi;
}
|