glib/.gitlab-ci/fedora.Dockerfile
Philip Withnall afd8dde13f gdatetime: Fix incorrect alt-digits being used after changing locale
The alt-digits are loaded from `nl_langinfo()` in a `GOnce` section,
which means `nl_langinfo()` is not re-queried after the process changes
locale (if that happens).

So, change the `GOnce` to a mutex and store the locale of the alt-digits
alongside them. This will introduce contention when calling
`format_number()` is called, but how often are multiple threads trying
to format dates at the same time?

If this does get highlighted as a performance problem, the other
approach I considered was a `GPrivate` struct containing all the
locale-specific cached data. That comes at the cost of using a
`GPrivate` slot (although that’s only particularly expensive on Windows,
and the locale code is quite different for Windows, so perhaps that
could be avoided entirely). It does mean that all locale printing could
be lock-free and still safely update cached data on a locale change.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2023-10-22 22:10:07 +01:00

105 lines
2.0 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

FROM fedora:37
RUN dnf -y update \
&& dnf -y install \
bindfs \
clang \
clang-analyzer \
dbus-daemon \
dbus-devel \
desktop-file-utils \
elfutils-libelf-devel \
findutils \
fuse \
gcc \
gcc-c++ \
gdb \
gettext \
gi-docgen \
git \
glibc-devel \
glibc-gconv-extra \
glibc-headers \
glibc-langpack-de \
glibc-langpack-el \
glibc-langpack-el \
glibc-langpack-en \
glibc-langpack-es \
glibc-langpack-es \
glibc-langpack-fa \
glibc-langpack-fr \
glibc-langpack-gu \
glibc-langpack-hr \
glibc-langpack-ja \
glibc-langpack-lt \
glibc-langpack-pl \
glibc-langpack-ru \
glibc-langpack-tr \
"gnome-desktop-testing >= 2018.1" \
gtk-doc \
itstool \
lcov \
libattr-devel \
libffi-devel \
libmount-devel \
libselinux-devel \
libxslt \
ncurses-compat-libs \
ninja-build \
pcre2-devel \
"python3-dbusmock >= 0.18.3-2" \
python3-pip \
python3-pygments \
python3-wheel \
shared-mime-info \
systemtap-sdt-devel \
unzip \
valgrind \
wget \
xdg-desktop-portal \
xz \
zlib-devel \
&& dnf -y install \
meson \
flex \
bison \
python3-devel \
autoconf \
automake \
gettext-devel \
libtool \
diffutils \
fontconfig-devel \
json-glib-devel \
geoclue2-devel \
pipewire-devel \
fuse-devel \
make \
&& dnf clean all
RUN pip3 install meson==0.60.3
COPY install-gitlab-cobertura-tools.sh .
RUN ./install-gitlab-cobertura-tools.sh
# Set /etc/machine-id as its needed for some D-Bus tests
RUN systemd-machine-id-setup
# Enable sudo for wheel users
RUN sed -i -e 's/# %wheel/%wheel/' -e '0,/%wheel/{s/%wheel/# %wheel/}' /etc/sudoers
ARG HOST_USER_ID=5555
ENV HOST_USER_ID ${HOST_USER_ID}
RUN useradd -u $HOST_USER_ID -G wheel -ms /bin/bash user
COPY android-ndk.sh .
RUN ./android-ndk.sh
USER user
WORKDIR /home/user
COPY cache-subprojects.sh .
RUN ./cache-subprojects.sh
ENV LANG C.UTF-8