Gentoo Archives: gentoo-commits

From: Mike Gilbert <floppym@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/chromium-tools:master commit in: /
Date: Thu, 01 Sep 2022 19:24:39
Message-Id: 1662060262.2075fce3f64bed3df495af5aad2295f336ddb49a.floppym@gentoo
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