summaryrefslogtreecommitdiff
blob: a3c6153411a8589312b590c031c0fdfe4848a9f1 (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
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7
inherit autotools flag-o-matic sgml-catalog-r1 toolchain-funcs

DESCRIPTION="Jade is an implementation of DSSSL for formatting SGML and XML documents"
HOMEPAGE="https://openjade.sourceforge.net"
SRC_URI="https://downloads.sourceforge.net/project/${PN}/${PN}/${PV}/${P}.tar.gz"

LICENSE="MIT"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"

RDEPEND="
	app-text/sgml-common
	>=app-text/opensp-1.5.1
"
DEPEND="${RDEPEND}
	dev-lang/perl
"

src_prepare() {
	default

	eapply "${FILESDIR}"/${P}-deplibs.patch
	eapply "${FILESDIR}"/${P}-ldflags.patch
	eapply "${FILESDIR}"/${P}-msggen.pl.patch
	eapply "${FILESDIR}"/${P}-respect-ldflags.patch
	eapply "${FILESDIR}"/${P}-libosp-la.patch
	eapply "${FILESDIR}"/${P}-gcc46.patch
	eapply "${FILESDIR}"/${P}-no-undefined.patch
	eapply "${FILESDIR}"/${P}-wchar_t-uint.patch
	eapply "${FILESDIR}"/${P}-chmod.patch #487218
	eapply "${FILESDIR}"/${P}-autoconf-2.70.patch #765034

	# Please note!  Opts are disabled.  If you know what you're doing
	# feel free to remove this line.  It may cause problems with
	# docbook-sgml-utils among other things.
	#ALLOWED_FLAGS="-O -O1 -O2 -pipe -g -march"
	strip-flags

	# Default CFLAGS and CXXFLAGS is -O2 but this make openjade segfault
	# on hppa. Using -O1 works fine. So I force it here.
	use hppa && replace-flags -O2 -O1

	ln -s config/configure.in configure.ac || die
	cp "${FILESDIR}"/${P}-acinclude.m4 acinclude.m4 || die
	rm config/missing || die

	AT_NOEAUTOMAKE=yes \
	eautoreconf
}

src_configure() {
	# avoids dead-store elimination optimization
	# leading to segfaults on GCC 6
	# bug #592590 #596506
	tc-is-clang || append-cxxflags $(test-flags-CXX -fno-lifetime-dse)

	# We need Prefix env, bug #287358
	CONFIG_SHELL="${CONFIG_SHELL:-${BASH}}" \
	econf \
		--enable-http \
		--enable-default-catalog="${EPREFIX}"/etc/sgml/catalog \
		--enable-default-search-path="${EPREFIX}"/usr/share/sgml \
		--enable-splibdir="${EPREFIX}"/usr/$(get_libdir) \
		--libdir="${EPREFIX}"/usr/$(get_libdir) \
		--datadir="${EPREFIX}"/usr/share/sgml/${P} \
		--disable-static
}

src_compile() {
	unset INCLUDE #412725
	emake -j1 SHELL="${BASH}"
}

src_install() {
	#dodir /usr/$(get_libdir)

	make DESTDIR="${D}" \
		SHELL="${BASH}" \
		libdir="${EPREFIX}"/usr/$(get_libdir) \
		install install-man

	find "${D}" -name '*.la' -delete || die

	dosym openjade /usr/bin/jade
	dosym onsgmls /usr/bin/nsgmls
	dosym osgmlnorm /usr/bin/sgmlnorm
	dosym ospam /usr/bin/spam
	dosym ospent /usr/bin/spent
	dosym osx /usr/bin/sgml2xml

	insinto /usr/share/sgml/${P}
	doins dsssl/builtins.dsl

	newins - catalog <<-EOF
		SYSTEM "builtins.dsl" "builtins.dsl"
	EOF
	doins -r pubtext
	insinto /usr/share/sgml/${P}/dsssl
	doins dsssl/{dsssl.dtd,style-sheet.dtd,fot.dtd}
	newins "${FILESDIR}"/${P}.dsssl-catalog catalog

	# Breaks sgml2xml among other things
	#insinto /usr/share/sgml/${P}/unicode
	#doins unicode/{catalog,unicode.sd,unicode.syn,gensyntax.pl}

	insinto /etc/sgml
	newins - "${P}.cat" <<-EOF
		CATALOG "${EPREFIX}/usr/share/sgml/openjade-${PV}/catalog"
		CATALOG "${EPREFIX}/usr/share/sgml/openjade-${PV}/dsssl/catalog"
	EOF

	local HTML_DOCS=( doc/*.htm )
	einstalldocs
	dodoc -r jadedoc
}

pkg_preinst() {
	# work-around old revision removing it
	cp "${ED}"/etc/sgml/${P}.cat "${T}" || die
}

pkg_postinst() {
	local backup=${T}/${P}.cat
	local real=${EROOT}/etc/sgml/${P}.cat
	if ! cmp -s "${backup}" "${real}"; then
		cp "${backup}" "${real}" || die
	fi
	# this one's shared with docbook-dsssl, so we need to do it in postinst
	if ! grep -q -s ${P}.cat \
			"${EROOT}"/etc/sgml/sgml-docbook.cat; then
		ebegin "Adding ${P}.cat to /etc/sgml/sgml-docbook.cat"
		cat >> "${EROOT}"/etc/sgml/sgml-docbook.cat <<-EOF
			CATALOG "${EPREFIX}/etc/sgml/${P}.cat"
		EOF
		eend ${?}
	fi
	sgml-catalog-r1_pkg_postinst
}

pkg_postrm() {
	if [[ -z ${REPLACED_BY_VERSION} ]]; then
		ebegin "Removing ${P}.cat from /etc/sgml/sgml-docbook.cat"
		sed -i -e '/${P}/d' \
			"${EROOT}"/etc/sgml/sgml-docbook.cat
		eend ${?}
		if [[ ! -s ${EROOT}/etc/sgml/sgml-docbook.cat ]]; then
			rm -f "${EROOT}"/etc/sgml/sgml-docbook.cat
		fi
	fi
	sgml-catalog-r1_pkg_postrm
}