summaryrefslogtreecommitdiff
path: root/www-apps/hugo/hugo-0.163.3.ebuild
blob: e544ae23eb041ead8d6424bc28f493d6c93fb952 (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
# Copyright 2018-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit check-reqs go-module shell-completion

DESCRIPTION="Fast static HTML and CSS website generator"
HOMEPAGE="https://gohugo.io https://github.com/gohugoio/hugo"
SRC_URI="
	https://github.com/gohugoio/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz
	https://github.com/gentoo-golang-dist/${PN}/releases/download/v${PV}/${P}-vendor.tar.xz
"

LICENSE="Apache-2.0 BSD BSD-2 MIT MPL-2.0 Unlicense"
SLOT="0"
KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86"
IUSE="+deploy doc +extended test"

BDEPEND="
	>=dev-lang/go-1.26.0
	test? (
		dev-python/docutils
		dev-ruby/asciidoctor
	)
"
RDEPEND="
	extended? (
		dev-libs/libsass:=
	)
"
DEPEND="${RDEPEND}"

# NOTE(JayF): Most tests currently pass, but not all. Most failing
#             tests are internet-dependant and need to be patched out.
# See https://bugs.gentoo.org/959346
RESTRICT="!test? ( test )"

REQUIRED_USE="deploy? ( extended )"

PATCHES=(
	"${FILESDIR}"/${P}-unbundle-libsass.patch
)

_check_reqs() {
	if [[ ${MERGE_TYPE} == binary ]] ; then
		return 0
	fi

	if has test ${FEATURES}; then
		CHECKREQS_DISK_BUILD="4G"
	else
		CHECKREQS_DISK_BUILD="1500M"
	fi
	check-reqs_${EBUILD_PHASE_FUNC}
}

pkg_pretend() {
	_check_reqs
}

pkg_setup() {
	_check_reqs
}

src_configure() {
	if use extended; then
		if use deploy; then
			# per 5dd0ba00f79d5888c8d6d05d3327a74d15073a7b (upstream) this is
			# the way to build fully extended with deploy support
			export MY_BUILD_FLAGS="-tags extended,withdeploy"
		else
			export MY_BUILD_FLAGS="-tags extended"
		fi
	else
		export MY_BUILD_FLAGS=""
	fi

	export CGO_ENABLED=1
	export CGO_CFLAGS="${CFLAGS}"
	export CGO_CPPFLAGS="${CPPFLAGS}"
	export CGO_CXXFLAGS="${CXXFLAGS}"
	export CGO_LDFLAGS="${LDFLAGS}"

	default
}

src_prepare() {
	# wants to run command that require network access
	rm testscripts/commands/mod{,_vendor,__disable,_get,_get_u,_npm{,_withexisting}}.txt || die

	# NOTE(JayF): Avoiding a hard depednency on sass tooling for tests. Even if
	# installed, the tests still don't quite work.
	rm resources/resource_transformers/tocss/dartsass/dartsass_integration_test.go || die

	# TODO(JayF): Over half of the tests in these modules require network, and it's
	# extremely likely more remote-depending tests will be added in the future.
	# Ideally, we'd be less blunt in how we disable these tests.
	rm tpl/tplimpl/shortcodes_integration_test.go || die
	rm resources/resource_factories/create/create_integration_test.go || die
	rm modules/client_test.go || die

	# NOTE(JayF): Tests depend on reaching out to npm registry
	rm internal/js/esbuild/batch_integration_test.go || die

	default
}

src_compile() {
	mkdir -pv bin || die
	ego build -ldflags "-X github.com/gohugoio/hugo/common/hugo.vendorInfo=gentoo:${PVR}" \
		${MY_BUILD_FLAGS} -o "${S}/bin/hugo"

	bin/hugo gen man --dir man || die

	mkdir -pv completions || die
	bin/hugo completion bash > completions/hugo || die
	bin/hugo completion fish > completions/hugo.fish || die
	bin/hugo completion zsh > completions/_hugo || die

	if use doc ; then
		bin/hugo gen doc --dir doc || die
	fi
}

src_test() {
	if ! has_version -b virtual/pandoc ; then
		elog "You're missing virtual/pandoc - some tests will be skipped."
	fi

	if ! has_version -b dev-ruby/asciidoctor ; then
		elog "You're missing dev-ruby/asciidoctor - some tests will be skipped."
	fi

	ego test "./..." ${MY_BUILD_FLAGS}
}

src_install() {
	dobin bin/*
	doman man/*

	dobashcomp completions/${PN}
	dofishcomp completions/${PN}.fish
	dozshcomp completions/_${PN}

	if use doc ; then
		dodoc -r doc/*
	fi
}