1 |
commit: 2075fce3f64bed3df495af5aad2295f336ddb49a |
2 |
Author: Mike Gilbert <floppym <AT> gentoo <DOT> org> |
3 |
AuthorDate: Thu Sep 1 19:24:03 2022 +0000 |
4 |
Commit: Mike Gilbert <floppym <AT> gentoo <DOT> org> |
5 |
CommitDate: Thu Sep 1 19:24:22 2022 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/chromium-tools.git/commit/?id=2075fce3 |
7 |
|
8 |
Add package.sh |
9 |
|
10 |
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org> |
11 |
|
12 |
package.sh | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
13 |
1 file changed, 115 insertions(+) |
14 |
|
15 |
diff --git a/package.sh b/package.sh |
16 |
new file mode 100755 |
17 |
index 0000000..41dbd92 |
18 |
--- /dev/null |
19 |
+++ b/package.sh |
20 |
@@ -0,0 +1,115 @@ |
21 |
+#!/bin/bash -e |
22 |
+ |
23 |
+MYPKG="chromium" |
24 |
+MYVERSION="99.0.4844.51" |
25 |
+#MYTARGETS=( "gcc_official" "gcc" "clang" "ozone" ) |
26 |
+MYTARGETS=( "gcc" "clang" "ozone" ) |
27 |
+ |
28 |
+MYRE2_SLOT="0/9" |
29 |
+MYICU_SLOT="0/70.1" |
30 |
+ |
31 |
+MYKEYWORD_PKGS=() |
32 |
+#MYKEYWORD_PKGS+=( "dev-util/gn" ) |
33 |
+#MYKEYWORD_PKGS+=( "~media-video/ffmpeg-4.3.1" ) |
34 |
+#MYKEYWORD_PKGS+=( "dev-libs/re2:${MYRE2_SLOT}" ) |
35 |
+#MYKEYWORD_PKGS+=( "dev-libs/icu:${MYICU_SLOT}" ) |
36 |
+#MYKEYWORD_PKGS+=( "=media-libs/libwebp-1.2.2" ) |
37 |
+ |
38 |
+MYCATEGORY="www-client" |
39 |
+MYPKGDIR="$(portageq pkgdir)" |
40 |
+MYEBUILD="=${MYPKG}-${MYVERSION}" |
41 |
+MYEMERGE_OPTS="-vuDN --with-bdeps=y --complete-graph" |
42 |
+MYCCACHE_BASE="/var/tmp/ccache" |
43 |
+MYCCACHE_USE=true |
44 |
+MYUSE_FLAGS_BASE="-component-build -headless -custom-cflags cups hangouts js-type-check -kerberos pic proprietary-codecs pulseaudio suid -system-ffmpeg system-icu tcmalloc widevine" |
45 |
+ |
46 |
+MYTARGET_USE_gcc_official=( "${MYCATEGORY}/${MYPKG} -wayland -screencast vaapi official" ) |
47 |
+MYTARGET_USE_gcc=( "${MYCATEGORY}/${MYPKG} -wayland -screencast -vaapi -official" ) |
48 |
+MYTARGET_USE_clang=( "${MYCATEGORY}/${MYPKG} -wayland -screencast -vaapi -official" ) |
49 |
+MYTARGET_USE_ozone=( "${MYCATEGORY}/${MYPKG} wayland screencast vaapi -official" ) |
50 |
+MYTARGET_USE_ozone+=( "x11-libs/gtk+ wayland" ) |
51 |
+MYTARGET_USE_ozone+=( "media-libs/mesa wayland" ) |
52 |
+ |
53 |
+MYCOMPILERS_gcc_official=( "gcc-9.3.0" ) |
54 |
+MYCOMPILERS_gcc=( "gcc-10.3.0" "gcc-11.2.0" ) |
55 |
+MYCOMPILERS_clang=( "clang-13" ) |
56 |
+MYCOMPILERS_ozone=( "gcc-11.2.0" ) |
57 |
+ |
58 |
+# merge ccache |
59 |
+emerge ${MYEMERGE_OPTS} ccache |
60 |
+if [[ ! -d "${MYCCACHE_BASE}" ]]; then |
61 |
+ mkdir -p "${MYCCACHE_BASE}" |
62 |
+ chown root:portage "${MYCCACHE_BASE}" |
63 |
+ chmod 775 "${MYCCACHE_BASE}" |
64 |
+fi |
65 |
+ |
66 |
+# setup keywords |
67 |
+rm -f "/etc/portage/package.accept_keywords/chromium" |
68 |
+echo "=${MYCATEGORY}/${MYPKG}-${MYVERSION}" >> "/etc/portage/package.accept_keywords/chromium" |
69 |
+ |
70 |
+for mypkg in "${MYKEYWORD_PKGS[@]}"; do |
71 |
+ echo "$mypkg" >> "/etc/portage/package.accept_keywords/chromium" |
72 |
+done |
73 |
+ |
74 |
+# unmask chromium (dev channels are usually masked) |
75 |
+rm -f "/etc/portage/package.unmask/chromium" |
76 |
+echo "=${MYCATEGORY}/${MYPKG}-${MYVERSION}" >> "/etc/portage/package.unmask/chromium" |
77 |
+ |
78 |
+# setup base USE flags |
79 |
+echo "${MYCATEGORY}/${MYPKG} ${MYUSE_FLAGS_BASE}" > "/etc/portage/package.use/chromium-base" |
80 |
+ |
81 |
+for mytarget in "${MYTARGETS[@]}"; do |
82 |
+ |
83 |
+ # setup build USE flags |
84 |
+ mytarget_use="MYTARGET_USE_${mytarget}[@]" |
85 |
+ rm -f "/etc/portage/package.use/chromium-build" |
86 |
+ for myuse in "${!mytarget_use}"; do |
87 |
+ echo "${myuse}" >> "/etc/portage/package.use/chromium-build" |
88 |
+ done |
89 |
+ |
90 |
+ mycompilers="MYCOMPILERS_${mytarget}[@]" |
91 |
+ for mycompiler in "${!mycompilers}"; do |
92 |
+ mycc="x86_64-pc-linux-gnu-${mycompiler}" |
93 |
+ if [[ ${mycompiler} = gcc* ]]; then |
94 |
+ mycxx="x86_64-pc-linux-gnu-${mycompiler/gcc/g++}" |
95 |
+ else |
96 |
+ mycxx="x86_64-pc-linux-gnu-${mycompiler/clang/clang++}" |
97 |
+ fi |
98 |
+ rm -f "/etc/portage/env/chromium-cc.conf" |
99 |
+ echo "CC=\"${mycc}\"" >> "/etc/portage/env/chromium-cc.conf" |
100 |
+ echo "CXX=\"${mycxx}\"" >> "/etc/portage/env/chromium-cc.conf" |
101 |
+ myversion="${mycompiler#*-}" |
102 |
+ # remove installed package |
103 |
+ emerge --depclean -v "${MYCATEGORY}/${MYPKG}" |
104 |
+ |
105 |
+ mytargetdir="${mytarget}_${mycompiler%%-*}${myversion%%.*}" |
106 |
+ |
107 |
+ # setup ccache |
108 |
+ if [[ ! -d "${MYCCACHE_BASE}/${mytargetdir}" ]]; then |
109 |
+ mkdir "${MYCCACHE_BASE}/${mytargetdir}" |
110 |
+ chown root:portage "${MYCCACHE_BASE}/${mytargetdir}" |
111 |
+ chmod 775 "${MYCCACHE_BASE}/${mytargetdir}" |
112 |
+ fi |
113 |
+ if [[ ! -f "${MYCCACHE_BASE}/${mytargetdir}/ccache.conf" ]]; then |
114 |
+ cat <<- EOF > "${MYCCACHE_BASE}/${mytargetdir}/ccache.conf" |
115 |
+ max_size = 10.0G |
116 |
+ umask = 002 |
117 |
+ compression = false |
118 |
+ EOF |
119 |
+ chown root:portage "${MYCCACHE_BASE}/${mytargetdir}/ccache.conf" |
120 |
+ chmod 664 "${MYCCACHE_BASE}/${mytargetdir}/ccache.conf" |
121 |
+ fi |
122 |
+ echo "CCACHE_DIR=\"${MYCCACHE_BASE}/${mytargetdir}\"" >> "/etc/portage/env/chromium-cc.conf" |
123 |
+ if [[ ${MYCCACHE_USE} = true ]]; then |
124 |
+ echo "FEATURES=\"ccache\"" >> "/etc/portage/env/chromium-cc.conf" |
125 |
+ fi |
126 |
+ |
127 |
+ # build chromium |
128 |
+ emerge ${MYEMERGE_OPTS} "${MYEBUILD}" |
129 |
+ # create binary package |
130 |
+# PKGDIR="${MYPKGDIR}/${mytargetdir}" quickpkg ${MYPKG} --include-config=y |
131 |
+ # update access rights |
132 |
+ find "${MYPKGDIR}" -type d -exec chmod 755 {} \; |
133 |
+ find "${MYPKGDIR}" -type f -exec chmod 644 {} \; |
134 |
+ done |
135 |
+done |