blob: 1897f8a804f7c92fff8d64c04977565d3f026a56 (
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
|
# Copyright 2022-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
MY_PN="${PN}3"
MECK_PV="0.8.13" # see rebar.config
inherit edo shell-completion
DESCRIPTION="A sophisticated build-tool for Erlang projects that follows OTP principles"
HOMEPAGE="https://www.rebar3.org/
https://github.com/erlang/rebar3/"
SRC_URI="
https://github.com/erlang/${MY_PN}/archive/refs/tags/${PV}.tar.gz
-> ${P}.gh.tar.gz
test? (
https://repo.hex.pm/tarballs/meck-${MECK_PV}.tar
)
"
S="${WORKDIR}/${MY_PN}-${PV}"
LICENSE="Apache-2.0 MIT BSD"
SLOT="3"
KEYWORDS="amd64 ~arm ppc ppc64 ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
# Note: /usr/bin/rebar is a ZIP archive of BEAM files so := is needed
# see #913601
RDEPEND="
>=dev-lang/erlang-26.0:=[ssl]
"
DEPEND="
${RDEPEND}
"
PATCHES=( "${FILESDIR}/rebar-3.27.0-rebar_ct_SUITE.patch" )
src_unpack() {
unpack "${P}.gh.tar.gz"
if use test; then
mkdir -p "${S}/vendor/meck" || die "failed to create dir"
tar -O -xf "${DISTDIR}/meck-${MECK_PV}.tar" contents.tar.gz \
| tar -xzf - -C "${S}/vendor/meck"
assert
fi
}
src_configure() {
unset MIX_REBAR3
export REBAR_OFFLINE="1"
default
}
src_compile() {
edo escript ./bootstrap --offline
}
src_test() {
local -a rebar_opts=( --verbose --readable true --dir ./apps/rebar/test/ )
local -a suites=(
# mock_git_resource mock_git_subdir_resource
# rebar_compile_SUITE
# rebar_ct_SUITE
# rebar_deps_SUITE
# rebar_dialyzer_SUITE
# rebar_hooks_SUITE
# rebar_install_deps_SUITE
# rebar_pkg_SUITE rebar_pkg_alias_SUITE rebar_pkg_repos_SUITE
# rebar_plugins_SUITE
# rebar_profiles_SUITE
# rebar_upgrade_SUITE
# rebar_xref_SUITE
mock_pkg_resource
rebar_alias_SUITE
rebar_as_SUITE
rebar_compiler_dag_SUITE rebar_compiler_epp_SUITE rebar_compiler_format_SUITE
rebar_completion_SUITE
rebar_cover_SUITE
rebar_dir_SUITE
rebar_disable_app_SUITE
rebar_discover_SUITE
rebar_dist_utils_SUITE
rebar_edoc_SUITE
rebar_escriptize_SUITE
rebar_eunit_SUITE
rebar_file_utils_SUITE
rebar_localfs_resource rebar_localfs_resource_v2
rebar_lock_SUITE
rebar_manifest_SUITE
rebar_namespace_SUITE
rebar_new_SUITE
rebar_opts_parser_SUITE
rebar_parallel_SUITE
rebar_paths_SUITE
rebar_release_SUITE
rebar_resource_SUITE
rebar_semver_SUITE
rebar_src_dirs_SUITE
rebar_templater_SUITE
rebar_test_utils
rebar_unlock_SUITE
rebar_uri_SUITE
rebar_utils_SUITE
)
local suites_failed=()
local suites_pass="YES"
local suite=""
for suite in "${suites[@]}" ; do
if ./rebar3 ct "${rebar_opts[@]}" --suite "${suite}" ; then
einfo "The rebar test suite \"${suite}\" passed tests successfully"
else
eerror "The rebar test suite \"${suite}\" failed tests"
suites_failed+=( "${suite}" )
suites_pass="NO"
fi
done
if [[ "${suites_pass}" == "NO" ]] ; then
eerror "Failed test suites: ${suites_failed[*]}"
die "Some rebar test suites failed! Please inspect the errors above."
fi
}
src_install() {
dobin ${MY_PN}
dodoc rebar.config.sample
doman manpages/${MY_PN}.1
dobashcomp apps/rebar/priv/shell-completion/bash/${MY_PN}
dozshcomp apps/rebar/priv/shell-completion/zsh/_${MY_PN}
insinto /usr/share/fish/completion
newins apps/rebar/priv/shell-completion/fish/${MY_PN}.fish ${MY_PN}
# MIX_REBAR3: Used by elixir
newenvd - 98rebar3 <<-EOF
MIX_REBAR3=${EPREFIX}/usr/bin/${MY_PN}
EOF
}
|