1 |
commit: 4807f16b028a94326972428907a97cd12a018730 |
2 |
Author: Andreas Sturmlechner <andreas.sturmlechner <AT> gmail <DOT> com> |
3 |
AuthorDate: Wed Jul 13 21:56:02 2016 +0000 |
4 |
Commit: Johannes Huber <johu <AT> gentoo <DOT> org> |
5 |
CommitDate: Thu Jul 14 06:54:11 2016 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4807f16b |
7 |
|
8 |
kde5.eclass: Add KDEBASE=kdel10n and helper functions |
9 |
|
10 |
Signed-off-by: Johannes Huber <johu <AT> gentoo.org> |
11 |
|
12 |
eclass/kde5.eclass | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
13 |
1 file changed, 90 insertions(+) |
14 |
|
15 |
diff --git a/eclass/kde5.eclass b/eclass/kde5.eclass |
16 |
index 72657f4..c095aae 100644 |
17 |
--- a/eclass/kde5.eclass |
18 |
+++ b/eclass/kde5.eclass |
19 |
@@ -99,6 +99,16 @@ else |
20 |
: ${KDE_TEST:=false} |
21 |
fi |
22 |
|
23 |
+# @ECLASS-VARIABLE: KDE_L10N |
24 |
+# @DESCRIPTION: |
25 |
+# This is an array of translations this ebuild supports. These translations |
26 |
+# are automatically added to IUSE. |
27 |
+if [[ ${KDEBASE} = kdel10n ]]; then |
28 |
+ if [[ -n ${KDE_L10N} ]]; then |
29 |
+ IUSE="${IUSE} $(printf 'l10n_%s ' ${KDE_L10N[@]})" |
30 |
+ fi |
31 |
+fi |
32 |
+ |
33 |
# @ECLASS-VARIABLE: KDE_PUNT_BOGUS_DEPS |
34 |
# @DESCRIPTION: |
35 |
# If set to "false", do nothing. |
36 |
@@ -115,6 +125,8 @@ fi |
37 |
|
38 |
if [[ ${KDEBASE} = kdevelop ]]; then |
39 |
HOMEPAGE="https://www.kdevelop.org/" |
40 |
+elif [[ ${KDEBASE} = kdel10n ]]; then |
41 |
+ HOMEPAGE="http://l10n.kde.org" |
42 |
else |
43 |
HOMEPAGE="https://www.kde.org/" |
44 |
fi |
45 |
@@ -279,6 +291,21 @@ _calculate_src_uri() { |
46 |
esac |
47 |
;; |
48 |
esac |
49 |
+ |
50 |
+ if [[ ${KDEBASE} = kdel10n ]] ; then |
51 |
+ local uri_base="${SRC_URI/${PN}-${PV}.tar.xz/}kde-l10n/kde-l10n" |
52 |
+ SRC_URI="" |
53 |
+ for my_l10n in ${KDE_L10N[@]} ; do |
54 |
+ case ${my_l10n} in |
55 |
+ sr | sr-ijekavsk | sr-Latn-ijekavsk | sr-Latn) |
56 |
+ SRC_URI="${SRC_URI} l10n_${my_l10n}? ( ${uri_base}-sr-${PV}.tar.xz )" |
57 |
+ ;; |
58 |
+ *) |
59 |
+ SRC_URI="${SRC_URI} l10n_${my_l10n}? ( ${uri_base}-$(kde_l10n2lingua ${my_l10n})-${PV}.tar.xz )" |
60 |
+ ;; |
61 |
+ esac |
62 |
+ done |
63 |
+ fi |
64 |
} |
65 |
|
66 |
# Determine fetch location for live sources |
67 |
@@ -358,6 +385,14 @@ kde5_src_unpack() { |
68 |
git-r3_src_unpack |
69 |
;; |
70 |
esac |
71 |
+ elif [[ ${KDEBASE} = kdel10n ]]; then |
72 |
+ mkdir -p "${S}" || die "Failed to create source dir ${S}" |
73 |
+ cd "${S}" |
74 |
+ for my_tar in ${A}; do |
75 |
+ tar -xpf "${DISTDIR}/${my_tar}" --xz \ |
76 |
+ "${my_tar/.tar.xz/}/CMakeLists.txt" "${my_tar/.tar.xz/}/5" 2> /dev/null || |
77 |
+ elog "${my_tar}: tar extract command failed at least partially - continuing" |
78 |
+ done |
79 |
else |
80 |
default |
81 |
fi |
82 |
@@ -369,6 +404,32 @@ kde5_src_unpack() { |
83 |
kde5_src_prepare() { |
84 |
debug-print-function ${FUNCNAME} "$@" |
85 |
|
86 |
+ if [[ ${KDEBASE} = kdel10n ]]; then |
87 |
+ # move known variant subdirs to root dir, currently sr@* |
88 |
+ use_if_iuse l10n_sr-ijekavsk && _l10n_variant_subdir2root sr-ijekavsk sr |
89 |
+ use_if_iuse l10n_sr-Latn-ijekavsk && _l10n_variant_subdir2root sr-Latn-ijekavsk sr |
90 |
+ use_if_iuse l10n_sr-Latn && _l10n_variant_subdir2root sr-Latn sr |
91 |
+ if use_if_iuse l10n_sr; then |
92 |
+ rm -rf kde-l10n-sr-${PV}/5/sr/sr@* || die "Failed to cleanup L10N=sr" |
93 |
+ _l10n_variant_subdir_buster sr |
94 |
+ elif [[ -d kde-l10n-sr-${PV} ]]; then |
95 |
+ # having any variant selected means parent lingua will be unpacked as well |
96 |
+ rm -r kde-l10n-sr-${PV} || die "Failed to remove sr parent lingua" |
97 |
+ fi |
98 |
+ |
99 |
+ # add all l10n directories to cmake |
100 |
+ cat <<-EOF > CMakeLists.txt || die |
101 |
+project(${PN}) |
102 |
+cmake_minimum_required(VERSION 2.8.12) |
103 |
+$(printf "add_subdirectory( %s )\n" \ |
104 |
+ `find . -mindepth 1 -maxdepth 1 -type d | sed -e "s:^\./::"`) |
105 |
+EOF |
106 |
+ |
107 |
+ # drop KDE4-based part |
108 |
+ find -maxdepth 2 -type f -name CMakeLists.txt -exec \ |
109 |
+ sed -i -e "/add_subdirectory(4)/ s/^/#DONT/" {} + || die |
110 |
+ fi |
111 |
+ |
112 |
cmake-utils_src_prepare |
113 |
|
114 |
# only build examples when required |
115 |
@@ -577,4 +638,33 @@ kde5_pkg_postrm() { |
116 |
xdg_pkg_postrm |
117 |
} |
118 |
|
119 |
+_l10n_variant_subdir2root() { |
120 |
+ local lingua=$(kde_l10n2lingua ${1}) |
121 |
+ local src=kde-l10n-${2}-${PV} |
122 |
+ local dest=kde-l10n-${lingua}-${PV}/5 |
123 |
+ |
124 |
+ # create variant rootdir structure from parent lingua and adapt it |
125 |
+ mkdir -p ${dest} || die "Failed to create ${dest}" |
126 |
+ mv ${src}/5/${2}/${lingua} ${dest}/${lingua} || die "Failed to create ${dest}/${lingua}" |
127 |
+ cp -f ${src}/CMakeLists.txt kde-l10n-${lingua}-${PV} || die "Failed to prepare L10N=${1} subdir" |
128 |
+ echo "add_subdirectory(${lingua})" > ${dest}/CMakeLists.txt || |
129 |
+ die "Failed to prepare ${dest}/CMakeLists.txt" |
130 |
+ cp -f ${src}/5/${2}/CMakeLists.txt ${dest}/${lingua} || |
131 |
+ die "Failed to create ${dest}/${lingua}/CMakeLists.txt" |
132 |
+ sed -e "s/${2}/${lingua}/" -i ${dest}/${lingua}/CMakeLists.txt || |
133 |
+ die "Failed to prepare ${dest}/${lingua}/CMakeLists.txt" |
134 |
+ |
135 |
+ _l10n_variant_subdir_buster ${1} |
136 |
+} |
137 |
+ |
138 |
+_l10n_variant_subdir_buster() { |
139 |
+ local dir=kde-l10n-$(kde_l10n2lingua ${1})-${PV}/5/$(kde_l10n2lingua ${1}) |
140 |
+ |
141 |
+ sed -e "/^add_subdirectory(/d" -i ${dir}/CMakeLists.txt || die "Failed to cleanup ${dir} subdir" |
142 |
+ |
143 |
+ for subdir in $(find ${dir} -mindepth 1 -maxdepth 1 -type d | sed -e "s:^\./::"); do |
144 |
+ echo "add_subdirectory(${subdir##*/})" >> ${dir}/CMakeLists.txt |
145 |
+ done |
146 |
+} |
147 |
+ |
148 |
fi |