1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

bootstrap/config.py: mv locale setup from bootstrap.sh

In future, samba developers could run `bootstrap.sh` to update
dependencies on their workstation, this is very useful when new people
get on board or new dependencies introduced.

But currenly it will override locale, which is not expected for this case.

Remove locale setup cmds from bootstrap.sh, add a separate script for this.

Although this script is written in a generic way and has no variable so far,
still follow the same routine as `bootstrap.sh` to keep consistent.

Signed-off-by: Joe Guo <joeg@catalyst.net.nz>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
This commit is contained in:
Joe Guo 2019-03-07 17:02:50 +13:00 committed by Stefan Metzmacher
parent 45fee29d1e
commit 9c33b193ff

View File

@ -159,21 +159,6 @@ apt-get -y install \
apt-get -y autoremove
apt-get -y autoclean
apt-get -y clean
# uncomment locale
# this file doesn't exist on ubuntu1404 even locales installed
if [ -f /etc/locale.gen ]; then
sed -i '/^#\s*en_US.UTF-8 UTF-8/s/^#\s*//' /etc/locale.gen
fi
locale-gen
# update /etc/default/locale
update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
# set both for safe
echo LC_ALL="en_US.UTF-8" >> /etc/environment
echo LANG="en_US.UTF-8" >> /etc/environment
"""
@ -189,17 +174,6 @@ yum -y -q --verbose install \
{pkgs}
yum clean all
# gen locale
localedef -c -i en_US -f UTF-8 en_US.UTF-8
# no update-locale, diy
# LC_ALL is not valid in this file
echo LANG="en_US.UTF-8" > /etc/locale.conf
# set both for safe
echo LC_ALL="en_US.UTF-8" >> /etc/environment
echo LANG="en_US.UTF-8" >> /etc/environment
"""
@ -213,17 +187,60 @@ dnf -y -q --verbose install \
{pkgs}
dnf clean all
"""
# gen locale
localedef -c -i en_US -f UTF-8 en_US.UTF-8
# no update-locale, diy
# LC_ALL is not valid in this file
echo LANG="en_US.UTF-8" > /etc/locale.conf
# A generic shell script to setup locale
LOCALE_SETUP = r"""
#!/bin/bash
set -xueo pipefail
# set both for safe
echo LC_ALL="en_US.UTF-8" >> /etc/environment
echo LANG="en_US.UTF-8" >> /etc/environment
# refer to /usr/share/i18n/locales
INPUTFILE=en_US
# refer to /usr/share/i18n/charmaps
CHARMAP=UTF-8
# locale to generate in /usr/lib/locale
# glibc/localedef will normalize UTF-8 to utf8, follow the naming style
LOCALE=$INPUTFILE.utf8
# if locale is already correct, exit
( locale | grep LC_ALL | grep -i $LOCALE ) && exit 0
# if locale not available, generate locale into /usr/lib/locale
if ! ( locale --all-locales | grep -i $LOCALE )
then
# no-archive means create its own dir
localedef --inputfile $INPUTFILE --charmap $CHARMAP --no-archive $LOCALE
fi
# update locale conf and global env file
# set both LC_ALL and LANG for safe
# update conf for Debian family
FILE=/etc/default/locale
if [ -f $FILE ]
then
echo LC_ALL="$LOCALE" > $FILE
echo LANG="$LOCALE" >> $FILE
fi
# update conf for RedHat family
FILE=/etc/locale.conf
if [ -f $FILE ]
then
# LC_ALL is not valid in this file, set LANG only
echo LANG="$LOCALE" > $FILE
fi
# update global env file
FILE=/etc/environment
if [ -f $FILE ]
then
# append LC_ALL if not exist
grep LC_ALL $FILE || echo LC_ALL="$LOCALE" >> $FILE
# append LANG if not exist
grep LANG $FILE || echo LANG="$LOCALE" >> $FILE
fi
"""
@ -233,9 +250,9 @@ FROM {docker_image}
# we will use this image to run ci, these ENV vars are important
ENV CC="ccache gcc"
ADD bootstrap.sh /tmp/bootstrap.sh
ADD *.sh /tmp/
# need root permission, do it before USER samba
RUN bash /tmp/bootstrap.sh
RUN /tmp/bootstrap.sh && /tmp/locale.sh
# make test can not work with root, so we have to create a new user
RUN useradd -m -s /bin/bash samba && \
@ -254,6 +271,7 @@ VAGRANTFILE_SNIPPET = r"""
v.vm.box = "{vagrant_box}"
v.vm.hostname = "{name}"
v.vm.provision :shell, path: "{name}/bootstrap.sh"
v.vm.provision :shell, path: "{name}/locale.sh"
end
"""
@ -423,6 +441,7 @@ def expand_family_dists(family):
# get dist bootstrap template or fall back to family default
bootstrap_template = config.get('bootstrap', family['bootstrap'])
config['bootstrap.sh'] = bootstrap_template.format(**config).strip()
config['locale.sh'] = LOCALE_SETUP.format(**config).strip()
config['Dockerfile'] = DOCKERFILE.format(**config).strip()
# keep the indent, no strip