summaryrefslogtreecommitdiff
blob: d126b3012607503164339ecf0122bac3b99859b4 (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
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

EAPI=6

KDE_HANDBOOK="optional"
KMNAME="kde-l10n"
inherit kde4-base

DESCRIPTION="KDE internationalization package"
HOMEPAGE="http://l10n.kde.org"

KEYWORDS="~amd64 ~x86"

DEPEND="
	sys-devel/gettext
"
RDEPEND="
	!minimal? ( !kde-apps/kde-l10n )
	minimal? ( >=kde-apps/kde-l10n-${PV} )
"

REMOVE_DIRS="${FILESDIR}/${PN}-16.04.1-remove-dirs"
REMOVE_MSGS="${FILESDIR}/${PN}-16.03.91-remove-messages"

LV="4.14.3"
LEGACY_LANGS="ar bg bs ca ca@valencia cs da de el en_GB es et eu fa fi fr ga gl
he hi hr hu ia id is it ja kk km ko lt lv mr nb nds nl nn pa pl pt pt_BR ro ru
sk sl sr sv tr ug uk wa zh_CN zh_TW"

# /usr/portage/distfiles $ ls -1 kde-l10n-*-${PV}.* |sed -e 's:-${PV}.tar.xz::' -e 's:kde-l10n-::' |tr '\n' ' '
MY_LANGS="ar ast bg bs ca ca@valencia cs da de el en_GB eo es et eu fa fi fr ga
gl he hi hr hu ia id is it ja kk km ko lt lv mr nb nds nl nn pa pl pt pt_BR ro
ru sk sl sr sv tr ug uk wa zh_CN zh_TW"

IUSE="+minimal test $(printf 'linguas_%s ' ${MY_LANGS})"

URI_BASE="${SRC_URI/-${PV}.tar.xz/}"
LURI_BASE="mirror://kde/stable/${LV}/src/${KMNAME}"
SRC_URI=""

for MY_LANG in ${LEGACY_LANGS} ; do
	SRC_URI="${SRC_URI} linguas_${MY_LANG}? ( ${LURI_BASE}/${KMNAME}-${MY_LANG}-${LV}.tar.xz )"
done

for MY_LANG in ${MY_LANGS} ; do
	SRC_URI="${SRC_URI} linguas_${MY_LANG}? ( ${URI_BASE}/${KMNAME}-${MY_LANG}-${PV}.tar.xz )"
done

S="${WORKDIR}"

pkg_setup() {
	if [[ -z ${A} ]]; then
		elog
		elog "You either have the LINGUAS variable unset, or it only"
		elog "contains languages not supported by ${P}."
		elog "You won't have any additional language support."
		elog
		elog "${P} supports these language codes:"
		elog "${MY_LANGS}"
		elog
	fi
	[[ -n ${A} ]] && kde4-base_pkg_setup
}

src_unpack() {
	for my_tar in ${A}; do
		[[ ${my_tar} = *${PV}* ]] && local subdir="/4"
		use minimal && [[ ${my_tar} = *${LV}* ]] && continue
		tar -xpf "${DISTDIR}/${my_tar}" --xz \
			"${my_tar/.tar.xz/}/CMakeLists.txt" "${my_tar/.tar.xz/}${subdir}" 2> /dev/null ||
			elog "${my_tar}: tar extract command failed at least partially - continuing"
	done
}

src_prepare() {
	default
	[[ -n ${A} ]] || return

	# LINGUAS=sr variants are subdirs within sr/ ...
	if use minimal && [[ -d "${KMNAME}-sr-${PV}" ]] ; then
		for variant in "${KMNAME}"-sr-${PV}/4/sr/sr@*; do
			mkdir -p "${KMNAME}-${variant##*/}-${PV}/4" ||
				die "Failed to create LINGUAS=${variant##*/} subdir"
			mv ${variant} "${KMNAME}-${variant##*/}-${PV}/4/sr" ||
				die "Failed to move LINGUAS=${variant##*/}"
			cp -f "${KMNAME}-sr-${PV}"/CMakeLists.txt "${KMNAME}-${variant##*/}-${PV}" ||
				die "Failed to prepare LINGUAS=${variant##*/} subdir"
			cp -f "${KMNAME}-sr-${PV}"/4/CMakeLists.txt "${KMNAME}-${variant##*/}-${PV}"/4 ||
				die "Failed to prepare LINGUAS=${variant##*/} subdir"
			cp -f "${KMNAME}-sr-${PV}"/4/sr/CMakeLists.txt "${KMNAME}-${variant##*/}-${PV}"/4/sr ||
				die "Failed to prepare LINGUAS=${variant##*/} subdir"
			sed -e "/^macro.*sr/d" \
				-e "s/sr/${variant##*/}/" \
				-i "${KMNAME}-${variant##*/}-${PV}"/4/sr/CMakeLists.txt ||
				die "Failed to prepare LINGUAS=${variant##*/} subdir"
		done
	fi

	# add all linguas to cmake
	cat <<-EOF > CMakeLists.txt || die
project(kde4-l10n)
cmake_minimum_required(VERSION 2.8.12)
$(printf "add_subdirectory( %s )\n" `find . -mindepth 1 -maxdepth 1 -type d -name "*${PV}*"`)
EOF

	# Drop KF5-based part
	find -maxdepth 2 -type f -name CMakeLists.txt -exec \
		sed -i -e "/add_subdirectory(5)/ s/^/#DONT/" {} + || die

	if use minimal; then
		einfo "Removing file collisions with Plasma 5 and Applications"
		use test && einfo "Tests enabled: Listing LINGUAS causing file collisions"

		einfo "Directories..."
		while read path; do
			if use test ; then	# build a report w/ LINGUAS="*" to submit @upstream
				local lngs
				for lng in ${LINGUAS}; do
					SDIR="${S}/${KMNAME}-${lng}-${PV}/4/${lng}"
					if [[ -d "${SDIR}"/${path%\ *}/${path#*\ } ]] ; then
						lngs+=" ${lng}"
					fi
				done
				[[ -n "${lngs}" ]] && einfo "${path%\ *}/${path#*\ }${lngs}"
				unset lngs
			fi
			if ls -U ./*/4/*/${path%\ *}/${path#*\ } > /dev/null 2>&1; then
				sed -e "\:add_subdirectory(\s*${path#*\ }\s*): s:^:#:" \
					-i ./*/4/*/${path%\ *}/CMakeLists.txt || \
					die "Failed to comment out ${path}"
			else
				einfo "F: ${path}"	# run with LINGUAS="*" to cut down list
			fi
		done < <(grep -ve "^$\|^\s*\#" "${REMOVE_DIRS}")
		einfo
		einfo "Messages..."
		while read path; do
			if use test ; then	# build a report w/ LINGUAS="*" to submit @upstream
				local lngs
				for lng in ${LINGUAS}; do
					SDIR="${S}/${KMNAME}-${lng}-${PV}/4/${lng}"
					if [[ -e "${SDIR}"/messages/${path} ]] ; then
						lngs+=" ${lng}"
					fi
				done
				[[ -n "${lngs}" ]] && einfo "${path}${lngs}"
				unset lngs
			fi
			if ls -U ./*/4/*/messages/${path} > /dev/null 2>&1; then
				rm ./*/4/*/messages/${path} || die "Failed to remove ${path}"
			else
				einfo "F: ${path}"	# run with LINGUAS="*" to cut down list
			fi
		done < <(grep -ve "^$\|^\s*\#" "${REMOVE_MSGS}")
	else
		local LNG LDIR
		for LNG in ${LINGUAS}; do
			LDIR="${KMNAME}-${LNG}-${LV}"
			if [[ -d "${KMNAME}-${LNG}-${PV}" && -d "${LDIR}" ]] ; then
				einfo "${LNG}: Adding legacy localisation"
				local dest_path
				# Step through directories alphabetically first
				for path in $(ls -R "${LDIR}" | grep ":$" | sed -e 's/:$//') ; do
					dest_path="${path/${LV}/${PV}/4/${LNG}}"
					if [[ ! -d "${dest_path}" ]] ; then
						einfo "   $(basename ${dest_path}) subdirectory"\
							"added to $(basename $(dirname ${dest_path}))"
						mkdir "${dest_path}" || die "Failed creating ${dest_path}"
						echo "add_subdirectory($(basename ${dest_path}))" >> \
							$(dirname "${dest_path}")/CMakeLists.txt
					fi
				done
				einfo "   merging legacy localisation..."
				for path in $(find "${LDIR}" -type f) ; do
					dest_path="${path/${LV}/${PV}/4/${LNG}}"
					cp -rn "${path}" "${dest_path}" || die "Failed copying ${path}"
				done
				# Disable kdepim
				for path in kdepim kdepimlibs kdepim-runtime ; do
					find "${S}/${KMNAME}-${LNG}-${PV}/4/${LNG}" -name CMakeLists.txt -type f -exec \
						sed -i -e "s:^ *add_subdirectory( *${path} *):# no ${path}:g" {} +
				done
				rm -rf "${LDIR}"
			fi
		done
	fi
}

src_configure() {
	mycmakeargs=(
		-DBUILD_docs=$(usex handbook)
	)
	[[ -n ${A} ]] && kde4-base_src_configure
}

src_compile() {
	[[ -n ${A} ]] && kde4-base_src_compile
}

src_test() { :; }

src_install() {
	[[ -n ${A} ]] && kde4-base_src_install
}