blob: 1b5ca9f0db123e1de22e20fab4a544c3b58a018b (
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
if [[ ${PV} == 9999 ]]; then
GITHUB_USER=RexOps
GITHUB_REPO=Rex
EGIT_REPO_URI="https://github.com/${GITHUB_USER}/${GITHUB_REPO}.git"
EGIT_BRANCH="master"
EGIT_CHECKOUT_DIR="${WORKDIR}/${PN}-git"
VCS_ECLASS="git-r3"
else
# This is intentional to stop perl-module.eclass doing magic things when it
# shouldn't. Like making ${S} contain "Rex" when the git clone has "rex"
# Also prevents perl-module.eclass provisioning SRC_URI
DIST_AUTHOR=FERKI
DIST_NAME=Rex
KEYWORDS="~amd64 ~x86"
fi
inherit bash-completion-r1 perl-module ${VCS_ECLASS}
DESCRIPTION="(R)?ex, the friendly automation framework"
HOMEPAGE="https://metacpan.org/dist/Rex https://www.rexify.org"
SLOT="0"
IUSE="minimal test"
RESTRICT="!test? ( test )"
DZIL_DEPENDS="
dev-perl/Dist-Zilla
dev-perl/Dist-Zilla-Plugin-CheckExtraTests
dev-perl/Dist-Zilla-Plugin-ContributorsFile
dev-perl/Dist-Zilla-Plugin-Git
dev-perl/Dist-Zilla-Plugin-Git-Contributors
dev-perl/Dist-Zilla-Plugin-MakeMaker-Awesome
dev-perl/Dist-Zilla-Plugin-Meta-Contributors
dev-perl/Dist-Zilla-Plugin-MetaProvides-Package
dev-perl/Dist-Zilla-Plugin-NextVersion-Semantic
dev-perl/Dist-Zilla-Plugin-OSPrereqs
dev-perl/Dist-Zilla-Plugin-OurPkgVersion
dev-perl/Dist-Zilla-Plugin-Run
dev-perl/Software-License
"
RDEPEND="
!minimal? (
dev-perl/DBI
dev-perl/Expect
dev-perl/IPC-Shareable
dev-perl/XML-LibXML
net-misc/rsync
)
virtual/perl-Carp
virtual/perl-Data-Dumper
dev-perl/Data-Validate-IP
dev-perl/Devel-Caller
dev-perl/Digest-HMAC
virtual/perl-Digest-MD5
virtual/perl-Exporter
virtual/perl-File-Spec
dev-perl/HTTP-Message
dev-perl/Hash-Merge
virtual/perl-IO
dev-perl/IO-String
dev-perl/IO-Tty
dev-perl/JSON-MaybeXS
virtual/perl-MIME-Base64
dev-perl/Net-OpenSSH
dev-perl/Net-SFTP-Foreign
>=virtual/perl-Scalar-List-Utils-1.450.0
dev-perl/Parallel-ForkManager
dev-perl/Sort-Naturally
dev-perl/String-Escape
virtual/perl-Storable
dev-perl/TermReadKey
virtual/perl-Test-Simple
dev-perl/Text-Glob
virtual/perl-Text-Tabs+Wrap
virtual/perl-Time-HiRes
dev-perl/URI
dev-perl/XML-Simple
dev-perl/libwww-perl
dev-perl/YAML
virtual/perl-version
virtual/perl-Term-ANSIColor
"
# NB: would add test? !minimal? Test-mysqld, but I can't get that to work
BDEPEND="
${RDEPEND}
>=virtual/perl-CPAN-Meta-Requirements-2.120.620
>=virtual/perl-ExtUtils-MakeMaker-7.110.100
>=dev-perl/File-ShareDir-Install-0.60.0
virtual/perl-Module-Metadata
test? (
!minimal? (
|| ( dev-perl/File-LibMagic sys-apps/file )
dev-vcs/git
)
virtual/perl-File-Temp
dev-perl/Sub-Override
dev-perl/Test-Deep
dev-perl/Test-Exception
dev-perl/Test-Output
dev-perl/Test-UseAllModules
dev-perl/Test-Warnings
virtual/perl-autodie
virtual/perl-Module-Load-Conditional
)
"
[[ ${PV} == 9999 ]] && BDEPEND+=" ${DZIL_DEPENDS}"
src_unpack() {
if [[ ${PV} == 9999 ]]; then
"${VCS_ECLASS}"_src_unpack
mkdir -p "${S}" || die "Can't make ${S}"
else
default
fi
}
dzil_src_prep() {
einfo "Patching dist.ini"
# This block of sed invocations removes all plugins that aren't
# useful for users to have on Gentoo, because all of them are
# conditional and subjective style checks, which don't indicate
# a real issue for users, and paying the price of their dependencies is undesired.
# The {N;d} trick adds the [n]ext line after the match to the pattern-space
# so that the final [d]elete deletes the next line too. Can be expanded for each
# line, ie: {N;N;N;d} deletes 3 lines after the match as well as the match.
sed -e '/^\[Test::Kwalitee\]/d' \
-e '/^\[PodSyntaxTests\]/d' \
-e '/^Perl::Critic::Freenode =/d' \
-e '/^Perl::Critic::TooMuchCode =/d' \
-e '/^Test::Kwalitee =/d' \
-e '/^Test::PerlTidy =/d' \
-e '/^Test::Pod =/d' \
-e '/^\[Test::CPAN::Changes\]/{N;d}' \
-e '/^\[OptionalFeature/,/^$/d' \
-e '/^\[Test::MinimumVersion\]/{N;d}' \
-i dist.ini || die "Can't patch dist.ini"
# Removals/additions have to be tracked by git or dzil build fails
# Spurious warning during src_prepare
git rm -f xt/author/critic-progressive.t || die "Can't rm author/critic-progressive.t"
# Spurious warning during src_prepare
git rm -f xt/author/perltidy.t || die "Can't rm author/perltidy.t"
}
dzil_env_setup() {
# NextRelease noise :(
mkdir -p ~/.dzil/ || die "mkdir -p ~/.dzil/ failed"
local user="$(whoami)"
local host="$(hostname)"
printf '[%%User]\nname = %s\nemail = %s' "${user}" "${user}@${host}" >> ~/.dzil/config.ini
}
dzil_to_distdir() {
local dzil_root dest has_missing modname dzil_version
dzil_root="$1"
dest="$2"
cd "${dzil_root}" || die "Can't enter git workdir '${dzil_root}'";
S="${dzil_root}" dzil_src_prep
dzil_env_setup
dzil_version="$(dzil version)" || die "Error invoking 'dzil version'"
einfo "Generating CPAN dist with ${dzil_version}"
has_missing=""
einfo "Checking dzil authordeps"
while IFS= read -d $'\n' -r modname; do
if [[ -z "${has_missing}" ]]; then
has_missing=1
eerror "'dzil authordeps' indicates missing build dependencies"
eerror "These will prevent building, please report a bug"
eerror "Missing:"
fi
eerror " ${modname}"
done < <( dzil authordeps --missing --versions )
[[ -z "${has_missing}" ]] || die "Satisfy all missing authordeps first"
einfo "Checking dzil build deps"
while IFS= read -d $'\n' -r modname; do
if [[ -z "${has_missing}" ]]; then
has_missing=1
ewarn "'dzil listdeps' indicates missing build dependencies"
ewarn "These may prevent building, please report a bug if they do"
ewarn "Missing:"
fi
ewarn " ${modname}"
done < <( dzil listdeps --missing --versions --author )
einfo "Generating release"
dzil build --notgz --in "${dest}" || die "Unable to build CPAN dist in '${dest}'"
}
src_prepare() {
if [[ ${PV} == 9999 ]]; then
# Uses git sources in WORKDIR/rex-git
# to generate a CPAN-style tree in ${S}
# before letting perl-module.eclass do the rest
dzil_to_distdir "${EGIT_CHECKOUT_DIR}" "${S}"
fi
cd "${S}" || die "Can't enter build dir"
# If you DIY installed Test::mysqld, but didn't patch
# it to handle the fact on Gentoo, mysql_install_db is NOT in PATH
# tests fail. So this test is patched out if mysql_install_db is not in PATH
if perl_has_module "Test::mysqld" && ! type -P mysql_install_db >/dev/null; then
perl_rm_files "t/db.t"
fi
perl-module_src_prepare
}
src_install() {
newbashcomp "share/${PN}-tab-completion.bash" "${PN}"
insinto /usr/share/zsh/site-functions
newins "share/${PN}-tab-completion.zsh" "_${PN}"
perl-module_src_install
}
|