f5dff9c52a
It turns out our manual locale cleanup is causing issues (see I54490b17a7f8b2f977369044fcc6bb49cc13768e). Upon further investigation, I think this is a better approach than manually deleting repos. glibc on Fedora obeys the %_install_langs macro for reducing the installed locales (as mentioned in the comments, F24 has moved to having different packages, but worry about that later). So our existing clear-out is really only required for CentOS, whose glibc does not have any way to indicate to build less locales. However, %_install_langs is still correct there, as it restricts some of the translation files and other things installed with the %lang macro in spec files. This is complicated by us having to set this at glibc-common install time, which happens with the "yum" from outside the chroot (i.e. on trusty). Since this is too old to have flags to pass this, we need to fiddle with rpmmacros. I've tested this with fedora-minimal builds and the locales file is about 2MiB, which is what it was after the cleanups, and the listed locales are only those we expect (i.e. it appears to be working). Change-Id: I528a68beeb7b2ceec25ccbec1900670501608158
86 lines
3 KiB
Bash
Executable file
86 lines
3 KiB
Bash
Executable file
#!/bin/bash
|
|
#
|
|
# Copyright 2015 Hewlett-Packard Development Company, L.P.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
#
|
|
|
|
if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then
|
|
set -x
|
|
fi
|
|
set -eu
|
|
set -o pipefail
|
|
|
|
# effectively: febootstrap-minimize --keep-zoneinfo --keep-rpmdb --keep-services "$target"
|
|
|
|
# This is only required on CentOS ... see notes in
|
|
# root.d/08-yum-chroot about %_install_langs
|
|
if [[ $DISTRO_NAME != "fedora" ]]; then
|
|
|
|
# Stripping *all* locales is a bad idea. For now, we take the
|
|
# suggestion in [1] for reducing this
|
|
# [1] https://bugzilla.redhat.com/show_bug.cgi?id=156477
|
|
|
|
if [ ! -f /usr/lib/locale/locale-archive ]; then
|
|
die "locale-archive not found? Can not do cleanup."
|
|
fi
|
|
|
|
# now the archive has everything in it, and is about 100MiB. Strip it
|
|
# to just en_US (basically, this is the locale we support if you ssh
|
|
# in, other than POSIX)
|
|
localedef --delete-from-archive \
|
|
$(localedef --list-archive | grep -v '^en_US' | xargs)
|
|
|
|
# This removes the locales from the archive index but doesn't rebuild
|
|
# the file, so it is still the same size (maybe it is sparse?
|
|
# presumably as it's mmapped you don't want to fiddle with the offsets
|
|
# of locales in the archive on a live system. We are not live).
|
|
|
|
# build-locale-archive is a tool provided by the RH packaging of
|
|
# glibc. Documentation is scarce, but it takes the pre-built locales
|
|
# in the tmpl file and creates an archive. It seems originally the
|
|
# installer would set some flags to rpm to tell the package what
|
|
# languages to pick out of the template, but along the way, this was
|
|
# reverted to install them (size considered less important than locale
|
|
# support).
|
|
|
|
# We hack this by moving the locale-archive we've removed the extra
|
|
# locales from to the template, then re-run the build.
|
|
mv /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl
|
|
|
|
# rebuild archive from template
|
|
/usr/sbin/build-locale-archive
|
|
|
|
# leave empty template behind as package does. I think this stops
|
|
# upgrades redoing things
|
|
echo > /usr/lib/locale/locale-archive.tmpl
|
|
|
|
# remove the unnecessary source locale files and iconv files
|
|
pushd /usr/share/locale
|
|
find . ! -name 'locale.alias' -delete
|
|
popd
|
|
rm -rf {lib.lib64}/gconv
|
|
|
|
fi
|
|
|
|
# docs
|
|
rm -rf /usr/share/{doc,info,gnome/help}
|
|
# cracklib
|
|
rm -rf /usr/share/cracklib
|
|
# i18n
|
|
rm -rf /usr/share/i18n
|
|
# sln
|
|
rm -rf /sbin/sln
|
|
# ldconfig
|
|
rm -rf /etc/ld.so.cache /var/cache/ldconfig
|
|
mkdir -p --mode=0755 /var/cache/ldconfig
|