diff --git a/build-system.sh b/build-system.sh index e740175..70e9aba 100755 --- a/build-system.sh +++ b/build-system.sh @@ -1,19 +1,41 @@ #!/bin/bash # -# THIS SCRIPT MUST **ONLY** BE RUN IN THE MASSOS CHROOT ENVIRONMENT!! -# RUNNING IT AS ROOT ON THE HOST SYSTEM **WILL** BREAK YOUR SYSTEM!! +# Builds the full MassOS system in a chroot environment. +# Copyright (C) 2021-2022 MassOS Developers. # -# Build the full MassOS system. +# This script is part of the MassOS build system. It is licensed under GPLv3+. +# See the 'LICENSE' file for the full license text. On a MassOS system, this +# document can also be found at '/usr/share/massos/LICENSE'. +# +# === IF RESUMING A FAILED BUILD, DO NOT REMOVE ANY LINES BEFORE LINE 38 === +# +# Exit if something goes wrong. set -e # Disabling hashing is useful so the newly built tools are detected. set +h -# Ensure we're running as root. -if [ $EUID -ne 0 ]; then - echo "DO NOT RUN THIS SCRIPT ON YOUR HOST SYSTEM." - echo "IT WILL RENDER YOUR SYSTEM UNUSABLE." - echo "YOU HAVE BEEN WARNED!!!" +# Ensure we're running in the MassOS chroot. +if [ $EUID -ne 0 ] || [ ! -d /sources ]; then + echo "DO NOT RUN THIS SCRIPT ON YOUR HOST SYSTEM." >&2 + echo "IT WILL RENDER YOUR SYSTEM UNUSABLE." >&2 + echo "YOU HAVE BEEN WARNED!!!" >&2 exit 1 fi +# Set the source directory correctly. +export SRC=/sources +cd $SRC +# Set the PATH correctly. +export PATH=/usr/bin:/usr/sbin:/sources/sphinx/bin +# Set the locale correctly. +export LC_ALL="en_US.UTF-8" +# Build in parallel using all available CPU cores. +export MAKEFLAGS="-j$(nproc)" +# Allow building some packages as root. +export FORCE_UNSAFE_CONFIGURE=1 +# Compiler flags for MassOS. We prefer to optimise for size. +CFLAGS="-w -Os -pipe" +CXXFLAGS="-w -Os -pipe" +export CFLAGS CXXFLAGS +# === IT IS SAFE TO REMOVE LINES BELOW THIS FOR A FAILED BUILD === # Setup the full filesystem structure. mkdir -p /{boot,home,mnt,opt,srv} mkdir -p /boot/efi @@ -37,31 +59,16 @@ touch /var/log/{btmp,lastlog,faillog,wtmp} chgrp utmp /var/log/lastlog chmod 664 /var/log/lastlog chmod 600 /var/log/btmp -# Set the source directory correctly. -export SRC=/sources -cd $SRC -# Set the PATH correctly. -export PATH=/usr/bin:/usr/sbin -# Set the locale correctly. -export LC_ALL="POSIX" -# Build in parallel using all available CPU cores. -export MAKEFLAGS="-j$(nproc)" -# Allow building some packages as root. -export FORCE_UNSAFE_CONFIGURE=1 # libstdc++ from GCC (Pass 2). -tar -xf gcc-11.2.0.tar.xz -cd gcc-11.2.0 +tar -xf gcc-11.3.0.tar.xz +cd gcc-11.3.0 ln -s gthr-posix.h libgcc/gthr-default.h mkdir build; cd build -../libstdc++-v3/configure CXXFLAGS="-g -O2 -D_GNU_SOURCE" --prefix=/usr --disable-multilib --disable-nls --host=$(uname -m)-massos-linux-gnu --disable-libstdcxx-pch +CFLAGS="-O2 -D_GNU_SOURCE" CXXFLAGS="-O2 -D_GNU_SOURCE" ../libstdc++-v3/configure --prefix=/usr --disable-multilib --disable-nls --host=$(uname -m)-massos-linux-gnu --disable-libstdcxx-pch make make install cd ../.. -rm -rf gcc-11.2.0 -# Compiler flags for MassOS. We prefer to optimise for size. -CFLAGS="-w -Os -pipe" -CXXFLAGS="-w -Os -pipe" -export CFLAGS CXXFLAGS +rm -rf gcc-11.3.0 # 'msgfmt', 'msgmerge', and 'xgettext' from Gettext. tar -xf gettext-0.21.tar.xz cd gettext-0.21 @@ -125,17 +132,16 @@ make prefix=/usr install cd .. rm -rf man-pages-5.13 # iana-etc. -tar -xf iana-etc-20220401.tar.gz -cp iana-etc-20220401/{protocols,services} /etc -rm -rf iana-etc-20220401 +tar -xf iana-etc-20220414.tar.gz +cp iana-etc-20220414/{protocols,services} /etc +rm -rf iana-etc-20220414 # Glibc. -unset CFLAGS CXXFLAGS tar -xf glibc-2.35.tar.xz cd glibc-2.35 patch -Np1 -i ../patches/glibc-2.35-FHSCompliance.patch mkdir build; cd build echo "rootsbindir=/usr/sbin" > configparms -../configure --prefix=/usr --disable-werror --enable-kernel=3.2 --enable-stack-protector=strong --with-headers=/usr/include libc_cv_slibdir=/usr/lib +CFLAGS="-O2" CXXFLAGS="-O2" ../configure --prefix=/usr --disable-werror --enable-kernel=3.2 --enable-stack-protector=strong --with-headers=/usr/include libc_cv_slibdir=/usr/lib make sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile make install @@ -147,8 +153,6 @@ install -Dm644 ../nscd/nscd.tmpfiles /usr/lib/tmpfiles.d/nscd.conf install -Dm644 ../nscd/nscd.service /usr/lib/systemd/system/nscd.service mkdir -p /usr/lib/locale mklocales -# Now the en_US.UTF-8 locale is installed, set it as the default. -export LC_ALL="en_US.UTF-8" cat > /etc/nsswitch.conf << END passwd: files group: files @@ -179,12 +183,10 @@ include /etc/ld.so.conf.d/*.conf END cd ../.. rm -rf glibc-2.35 -CFLAGS="-w -Os -pipe" -CXXFLAGS="-w -Os -pipe" -export CFLAGS CXXFLAGS # zlib. tar -xf zlib-1.2.12.tar.xz cd zlib-1.2.12 +patch -Np1 -i ../patches/zlib-1.2.12-upstreamfix.patch ./configure --prefix=/usr make make install @@ -285,21 +287,23 @@ install -t /usr/share/licenses/m4 -Dm644 COPYING cd .. rm -rf m4-1.4.19 # bc. -tar -xf bc-5.2.3.tar.xz -cd bc-5.2.3 -CC=gcc ./configure --prefix=/usr -G -Os +tar -xf bc-5.2.4.tar.xz +cd bc-5.2.4 +CC=gcc ./configure.sh --prefix=/usr --disable-generated-tests make make install install -t /usr/share/licenses/bc -Dm644 LICENSE.md cd .. -rm -rf bc-5.2.3 +rm -rf bc-5.2.4 # Flex. tar -xf flex-2.6.4.tar.gz cd flex-2.6.4 ./configure --prefix=/usr --disable-static make make install -ln -s flex /usr/bin/lex +ln -sf flex /usr/bin/lex +ln -sf flex.1 /usr/share/man/man1/lex.1 +ln -sf flex.info /usr/share/info/lex.info install -t /usr/share/licenses/flex -Dm644 COPYING cd .. rm -rf flex-2.6.4 @@ -327,17 +331,13 @@ tar -xf binutils-2.38.tar.xz cd binutils-2.38 patch -Np1 -i ../patches/binutils-2.38-LTO.patch mkdir build; cd build -unset CFLAGS CXXFLAGS -../configure --prefix=/usr --enable-gold --enable-ld=default --enable-plugins --enable-shared --disable-werror --enable-64-bit-bfd --with-system-zlib +CFLAGS="-O2" CXXFLAGS="-O2" ../configure --prefix=/usr --with-pkgversion="MassOS Binutils" --with-system-zlib --enable-gold --enable-ld=default --enable-plugins --enable-shared --enable-64-bit-bfd --disable-werror make tooldir=/usr -make tooldir=/usr install +make -j1 tooldir=/usr install rm -f /usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes}.a install -t /usr/share/licenses/binutils -Dm644 ../COPYING ../COPYING.LIB ../COPYING3 ../COPYING3.LIB cd ../.. rm -rf binutils-2.38 -CFLAGS="-w -Os -pipe" -CXXFLAGS="-w -Os -pipe" -export CFLAGS CXXFLAGS # GMP. tar -xf gmp-6.2.1.tar.xz cd gmp-6.2.1 @@ -532,16 +532,11 @@ install -t /usr/share/licenses/shadow -Dm644 COPYING cd .. rm -rf shadow-4.11.1 # GCC. -tar -xf gcc-11.2.0.tar.xz -cd gcc-11.2.0 -sed -e '/static.*SIGSTKSZ/d' -e 's/return kAltStackSize/return SIGSTKSZ * 4/' -i libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp +tar -xf gcc-11.3.0.tar.xz +cd gcc-11.3.0 sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64 mkdir build; cd build -# GCC must not be built with our custom compiler flags, so we unset them here. -unset CFLAGS CXXFLAGS -# Ensure GCC uses the linker from the latest installed binutils. -export LD=ld -../configure --prefix=/usr --enable-languages=c,c++ --with-system-zlib --enable-default-ssp --disable-bootstrap --disable-multilib +CFLAGS="-O2" CXXFLAGS="-O2" LD=ld ../configure --prefix=/usr --enable-languages=c,c++ --with-pkgversion="MassOS GCC" --with-system-zlib --enable-default-ssp --disable-bootstrap --disable-multilib make make install rm -rf /usr/lib/gcc/$(gcc -dumpmachine)/$(gcc -dumpversion)/include-fixed/bits/ @@ -551,12 +546,7 @@ mkdir -p /usr/share/gdb/auto-load/usr/lib mv /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib install -t /usr/share/licenses/gcc -Dm644 ../COPYING ../COPYING.LIB ../COPYING3 ../COPYING3.LIB ../COPYING.RUNTIME cd ../.. -rm -rf gcc-11.2.0 -unset LD -# Re-set compiler flags. -CFLAGS="-w -Os -pipe" -CXXFLAGS="-w -Os -pipe" -export CFLAGS CXXFLAGS +rm -rf gcc-11.3.0 # pkg-config. tar -xf pkg-config-0.29.2.tar.gz cd pkg-config-0.29.2 @@ -790,15 +780,15 @@ install -t /usr/share/licenses/psmisc -Dm644 COPYING cd .. rm -rf psmisc-v23.4-5fab6b7ab385080f1db725d6803136ec1841a15f # elfutils. -tar -xf elfutils-0.186.tar.bz2 -cd elfutils-0.186 +tar -xf elfutils-0.187.tar.bz2 +cd elfutils-0.187 ./configure --prefix=/usr --program-prefix="eu-" --disable-debuginfod --enable-libdebuginfod=dummy make make install rm -f /usr/lib/lib{asm,dw,elf}.a install -t /usr/share/licenses/elfutils -Dm644 COPYING COPYING-GPLV2 COPYING-LGPLV3 cd .. -rm -rf elfutils-0.186 +rm -rf elfutils-0.187 # libffi. tar -xf libffi-3.4.2.tar.gz cd libffi-3.4.2 @@ -855,6 +845,9 @@ ln -sf pip3 /usr/bin/pip install -t /usr/share/licenses/python -Dm644 LICENSE cd .. rm -rf Python-3.10.4 +# Sphinx (required to build man pages of some packages). +tar -xf sphinx-4.5.0-x86_64-venv.tar.xz +mv sphinx{-4.5.0-x86_64-venv,} # Ninja. tar -xf ninja-1.10.2.tar.gz cd ninja-1.10.2 @@ -866,8 +859,8 @@ install -t /usr/share/licenses/ninja -Dm644 COPYING cd .. rm -rf ninja-1.10.2 # Meson. -tar -xf meson-0.62.0.tar.gz -cd meson-0.62.0 +tar -xf meson-0.62.1.tar.gz +cd meson-0.62.1 python setup.py build python setup.py install --root=meson-destination-directory cp -r meson-destination-directory/* / @@ -875,7 +868,7 @@ install -Dm644 data/shell-completions/bash/meson /usr/share/bash-completion/comp install -Dm644 data/shell-completions/zsh/_meson /usr/share/zsh/site-functions/_meson install -t /usr/share/licenses/meson -Dm644 COPYING cd .. -rm -rf meson-0.62.0 +rm -rf meson-0.62.1 # PyParsing. tar -xf pyparsing_3.0.7.tar.gz cd pyparsing-pyparsing_3.0.7 @@ -893,14 +886,14 @@ install -t /usr/share/licenses/distro -Dm644 LICENSE cd .. rm -rf distro-1.6.0 # libseccomp. -tar -xf libseccomp-2.5.3.tar.gz -cd libseccomp-2.5.3 +tar -xf libseccomp-2.5.4.tar.gz +cd libseccomp-2.5.4 ./configure --prefix=/usr --disable-static make make install install -t /usr/share/licenses/libseccomp -Dm644 LICENSE cd .. -rm -rf libseccomp-2.5.3 +rm -rf libseccomp-2.5.4 # File. tar -xf file-5.41.tar.gz cd file-5.41 @@ -911,11 +904,9 @@ install -t /usr/share/licenses/file -Dm644 COPYING cd .. rm -rf file-5.41 # Coreutils. -tar -xf coreutils-9.0.tar.xz -cd coreutils-9.0 -patch -Np1 -i ../patches/coreutils-9.0-chmodfix.patch -patch -Np1 -i ../patches/coreutils-9.0-progressbar.patch -autoreconf -fi +tar -xf coreutils-9.1.tar.xz +cd coreutils-9.1 +patch -Np1 -i ../patches/coreutils-9.1-progressbar.patch ./configure --prefix=/usr --enable-no-install-program=kill,uptime --with-packager="MassOS" make make install @@ -924,7 +915,7 @@ mv /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8 sed -i 's/"1"/"8"/' /usr/share/man/man8/chroot.8 install -t /usr/share/licenses/coreutils -Dm644 COPYING cd .. -rm -rf coreutils-9.0 +rm -rf coreutils-9.1 # Moreutils. tar -xf moreutils_0.67.orig.tar.gz cd moreutils-0.67 @@ -1072,14 +1063,14 @@ install -t /usr/share/licenses/kbd -Dm644 COPYING cd .. rm -rf kbd-2.4.0 # libpipeline. -tar -xf libpipeline-1.5.5.tar.gz -cd libpipeline-1.5.5 +tar -xf libpipeline-1.5.6.tar.gz +cd libpipeline-1.5.6 ./configure --prefix=/usr make make install install -t /usr/share/licenses/libpipeline -Dm644 COPYING cd .. -rm -rf libpipeline-1.5.5 +rm -rf libpipeline-1.5.6 # libunwind. tar -xf libunwind-1.6.2.tar.gz cd libunwind-1.6.2 @@ -1136,8 +1127,8 @@ install -t /usr/share/licenses/gtar -Dm644 COPYING cd .. rm -rf tar-1.34 # Nano (Vim will be installed later, after Xorg, to support a GUI). -tar -xf nano-6.2.tar.xz -cd nano-6.2 +tar -xf nano-6.3.tar.xz +cd nano-6.3 ./configure --prefix=/usr --sysconfdir=/etc --enable-utf8 make make install @@ -1145,7 +1136,7 @@ cp doc/sample.nanorc /etc/nanorc sed -i '0,/# include/{s/# include/include/}' /etc/nanorc install -t /usr/share/licenses/nano -Dm644 COPYING cd .. -rm -rf nano-6.2 +rm -rf nano-6.3 # dos2unix. tar -xf dos2unix-7.4.2.tar.gz cd dos2unix-7.4.2 @@ -1186,12 +1177,12 @@ install -t /usr/share/licenses/mako -Dm644 LICENSE cd .. rm -rf Mako-1.2.0 # Pygments. -tar -xf Pygments-2.11.2.tar.gz -cd Pygments-2.11.2 +tar -xf Pygments-2.12.0.tar.gz +cd Pygments-2.12.0 python setup.py install --optimize=1 install -t /usr/share/licenses/pygments -Dm644 LICENSE cd .. -rm -rf Pygments-2.11.2 +rm -rf Pygments-2.12.0 # toml. tar -xf toml-0.10.2.tar.gz cd toml-0.10.2 @@ -1264,8 +1255,8 @@ install -t /usr/share/licenses/help2man -Dm644 COPYING cd .. rm -rf help2man-1.49.2 # dialog. -tar -xf dialog-1.3-20220117.tgz -cd dialog-1.3-20220117 +tar -xf dialog-1.3-20220414.tgz +cd dialog-1.3-20220414 ./configure --prefix=/usr --enable-nls --with-libtool --with-ncursesw make make install @@ -1273,7 +1264,7 @@ rm -f /usr/lib/libdialog.a chmod 755 /usr/lib/libdialog.so.15.0.0 install -t /usr/share/licenses/dialog -Dm644 COPYING cd .. -rm -rf dialog-1.3-20220117 +rm -rf dialog-1.3-20220414 # acpi. tar -xf acpi-1.7.tar.gz cd acpi-1.7 @@ -1344,14 +1335,14 @@ install -t /usr/share/licenses/icu -Dm644 ../LICENSE cd ../.. rm -rf icu # Boost. -tar -xf boost_1_78_0.tar.bz2 -cd boost_1_78_0 +tar -xf boost_1_79_0.tar.bz2 +cd boost_1_79_0 ./bootstrap.sh --prefix=/usr --with-icu ./b2 stage -j$(nproc) threading=multi link=shared ./b2 install threading=multi link=shared install -t /usr/share/licenses/boost -Dm644 LICENSE_1_0.txt cd .. -rm -rf boost_1_78_0 +rm -rf boost_1_79_0 # libgpg-error. tar -xf libgpg-error-1.45.tar.bz2 cd libgpg-error-1.45 @@ -2001,14 +1992,14 @@ cp -a lvm2-2.03.15-x86_64-precompiled-MassOS/BINARY/* / ldconfig rm -rf lvm2-2.03.15-x86_64-precompiled-MassOS # btrfs-progs. -tar -xf btrfs-progs-v5.16.2.tar.xz -cd btrfs-progs-v5.16.2 +tar -xf btrfs-progs-v5.17.tar.xz +cd btrfs-progs-v5.17 ./configure --prefix=/usr make make install install -t /usr/share/licenses/btrfs-progs -Dm644 COPYING cd .. -rm -rf btrfs-progs-v5.16.2 +rm -rf btrfs-progs-v5.17 # inih. tar -xf inih-r55.tar.gz cd inih-r55 @@ -2071,14 +2062,14 @@ install -t /usr/share/licenses/fakeroot -Dm644 COPYING cd .. rm -rf fakeroot-1.28 # Parted. -tar -xf parted-3.4.tar.xz -cd parted-3.4 +tar -xf parted-3.5.tar.xz +cd parted-3.5 ./configure --prefix=/usr --disable-static make make install install -t /usr/share/licenses/parted -Dm644 COPYING cd .. -rm -rf parted-3.4 +rm -rf parted-3.5 # Popt. tar -xf popt-1.18-release.tar.gz cd popt-popt-1.18-release @@ -2090,25 +2081,36 @@ install -t /usr/share/licenses/popt -Dm644 COPYING cd .. rm -rf popt-popt-1.18-release # gptfdisk. -tar -xf gptfdisk-1.0.8.tar.gz -cd gptfdisk-1.0.8 -patch -Np1 -i ../patches/gptfdisk-1.0.8-convenience-1.patch +tar -xf gptfdisk-1.0.9.tar.gz +cd gptfdisk-1.0.9 sed -i 's|ncursesw/||' gptcurses.cc -sed -i 's|sbin|usr/sbin|' Makefile make -make install +install -t /usr/sbin -Dm755 gdisk cgdisk sgdisk fixparts +install -t /usr/share/man/man8 -Dm644 gdisk.8 cgdisk.8 sgdisk.8 fixparts.8 install -t /usr/share/licenses/gptfdisk -Dm644 COPYING cd .. -rm -rf gptfdisk-1.0.8 +rm -rf gptfdisk-1.0.9 +## xxhash. +tar -xf xxHash-0.8.1.tar.gz +cd xxHash-0.8.1 +make PREFIX=/usr CFLAGS="$CFLAGS -fPIC" +make PREFIX=/usr install +rm -f /usr/lib/libxxhash.a +ln -sf xxhsum.1 /usr/share/man/man1/xxh32sum.1 +ln -sf xxhsum.1 /usr/share/man/man1/xxh64sum.1 +ln -sf xxhsum.1 /usr/share/man/man1/xxh128sum.1 +install -t /usr/share/licenses/xxhash -Dm644 LICENSE +cd .. +rm -rf xxHash-0.8.1 # rsync. -tar -xf rsync-3.2.3.tar.gz -cd rsync-3.2.3 -./configure --prefix=/usr --disable-lz4 --disable-xxhash --without-included-zlib +tar -xf rsync-3.2.4.tar.gz +cd rsync-3.2.4 +./configure --prefix=/usr --without-included-zlib make make install install -t /usr/share/licenses/rsync -Dm644 COPYING cd .. -rm -rf rsync-3.2.3 +rm -rf rsync-3.2.4 # Brotli. tar -xf brotli-1.0.9.tar.gz cd brotli-1.0.9 @@ -2132,15 +2134,14 @@ install -t /usr/share/licenses/libnghttp2 -Dm644 COPYING cd .. rm -rf nghttp2-1.47.0 # curl (INITIAL BUILD; will be rebuilt later to support FAR MORE FEATURES). -tar -xf curl-7.82.0.tar.xz -cd curl-7.82.0 -patch -Np1 -i ../patches/curl-7.82.0-UpstreamFixes.patch +tar -xf curl-7.83.0.tar.xz +cd curl-7.83.0 ./configure --prefix=/usr --disable-static --with-openssl --enable-threaded-resolver --with-ca-path=/etc/ssl/certs make make install install -t /usr/share/licenses/curl -Dm644 COPYING cd .. -rm -rf curl-7.82.0 +rm -rf curl-7.83.0 # jsoncpp. tar -xf jsoncpp-1.9.5.tar.gz cd jsoncpp-1.9.5 @@ -2183,15 +2184,15 @@ install -t /usr/share/licenses/c-ares -Dm644 ../LICENSE.md cd ../.. rm -rf c-ares-1.18.1 # JSON-C. -tar -xf json-c-0.15.tar.gz -cd json-c-0.15 +tar -xf json-c-0.16.tar.gz +cd json-c-0.16 mkdir json-c-build; cd json-c-build cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_STATIC_LIBS=OFF -Wno-dev -G Ninja .. ninja ninja install install -t /usr/share/licenses/json-c -Dm644 ../COPYING cd ../.. -rm -rf json-c-0.15 +rm -rf json-c-0.16 # cryptsetup. tar -xf cryptsetup-2.4.3.tar.xz cd cryptsetup-2.4.3 @@ -2201,6 +2202,34 @@ make install install -t /usr/share/licenses/cryptsetup -Dm644 COPYING COPYING.LGPL cd .. rm -rf cryptsetup-2.4.3 +# libtpms. +tar -xf libtpms-0.9.2.tar.gz +cd libtpms-0.9.2 +./autogen.sh --prefix=/usr --with-openssl --with-tpm2 +make +make install +rm -f /usr/lib/libtpms.a +install -t /usr/share/licenses/libtpms -Dm644 LICENSE +cd .. +rm -rf libtpms-0.9.2 +# tpm2-tss. +tar -xf tpm2-tss-3.2.0.tar.gz +cd tpm2-tss-3.2.0 +cat > lib/tss2-tcti-libtpms.map << "END" +{ + global: + Tss2_Tcti_Info; + Tss2_Tcti_Libtpms_Init; + local: + *; +}; +END +./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-runstatedir=/run --with-sysusersdir=/usr/lib/sysusers.d --with-tmpfilesdir=/usr/lib/tmpfiles.d --with-udevrulesprefix="60-" --disable-static +make +make install +install -t /usr/share/licenses/tpm2-tss -Dm644 LICENSE +cd .. +rm -rf tpm2-tss-3.2.0 # libusb. tar -xf libusb-1.0.26.tar.bz2 cd libusb-1.0.26 @@ -2241,14 +2270,14 @@ install -t /usr/share/licenses/pcre -Dm644 LICENCE cd .. rm -rf pcre-8.45 # PCRE2. -tar -xf pcre2-10.39.tar.bz2 -cd pcre2-10.39 +tar -xf pcre2-10.40.tar.bz2 +cd pcre2-10.40 ./configure --prefix=/usr --enable-unicode --enable-jit --enable-pcre2-16 --enable-pcre2-32 --enable-pcre2grep-libz --enable-pcre2grep-libbz2 --enable-pcre2test-libreadline --disable-static make make install install -t /usr/share/licenses/pcre2 -Dm644 LICENCE cd .. -rm -rf pcre2-10.39 +rm -rf pcre2-10.40 # Grep (rebuild for PCRE support). tar -xf grep-3.7.tar.xz cd grep-3.7 @@ -2313,14 +2342,14 @@ install -t /usr/share/licenses/usbutils -Dm644 LICENSES/* cd .. rm -rf usbutils-014 # pciutils. -tar -xf pciutils-3.7.0.tar.xz -cd pciutils-3.7.0 +tar -xf pciutils-3.8.0.tar.xz +cd pciutils-3.8.0 make PREFIX=/usr SHAREDIR=/usr/share/hwdata SHARED=yes make PREFIX=/usr SHAREDIR=/usr/share/hwdata SHARED=yes install install-lib chmod 755 /usr/lib/libpci.so install -t /usr/share/licenses/pciutils -Dm644 COPYING cd .. -rm -rf pciutils-3.7.0 +rm -rf pciutils-3.8.0 # libtasn1. tar -xf libtasn1-4.18.0.tar.gz cd libtasn1-4.18.0 @@ -2358,14 +2387,14 @@ install -t /usr/share/licenses/make-ca -Dm644 LICENSE LICENSE.GPLv3 LICENSE.MIT cd .. rm -rf make-ca-1.9 # pkcs11-helper. -tar -xf pkcs11-helper-1.28.0.tar.gz -cd pkcs11-helper-1.28.0 +tar -xf pkcs11-helper-1.29.0.tar.bz2 +cd pkcs11-helper-1.29.0 ./configure --prefix=/usr make make install install -t /usr/share/licenses/pkcs11-helper -Dm644 COPYING COPYING.BSD COPYING.GPL cd .. -rm -rf pkcs11-helper-1.28.0 +rm -rf pkcs11-helper-1.29.0 # libssh2. tar -xf libssh2-1.10.0.tar.gz cd libssh2-1.10.0 @@ -2443,15 +2472,15 @@ install -t /usr/share/licenses/libksba -Dm644 COPYING COPYING.GPLv2 COPYING.GPLv cd .. rm -rf libksba-1.6.0 # GNUPG. -tar -xf gnupg-2.3.4.tar.bz2 -cd gnupg-2.3.4 +tar -xf gnupg-2.3.6.tar.bz2 +cd gnupg-2.3.6 sed -i '/noinst_SCRIPTS = gpg-zip/c sbin_SCRIPTS += gpg-zip' tools/Makefile.in ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-g13 make make install install -t /usr/share/licenses/gnupg -Dm644 COPYING COPYING.CC0 COPYING.GPL2 COPYING.LGPL21 COPYING.LGPL3 COPYING.other cd .. -rm -rf gnupg-2.3.4 +rm -rf gnupg-2.3.6 # krb5. tar -xf krb5-1.19.3.tar.gz cd krb5-1.19.3/src @@ -2474,14 +2503,13 @@ install -t /usr/share/licenses/rtmpdump -Dm644 COPYING cd .. rm -rf rtmpdump-2.4-20210219-gf1b83c1 # curl (rebuild to support more features). -tar -xf curl-7.82.0.tar.xz -cd curl-7.82.0 -patch -Np1 -i ../patches/curl-7.82.0-UpstreamFixes.patch +tar -xf curl-7.83.0.tar.xz +cd curl-7.83.0 ./configure --prefix=/usr --disable-static --with-openssl --with-libssh2 --with-gssapi --enable-ares --enable-threaded-resolver --with-ca-path=/etc/ssl/certs make make install cd .. -rm -rf curl-7.82.0 +rm -rf curl-7.83.0 # OpenVPN. tar -xf openvpn-2.5.6.tar.gz cd openvpn-2.5.6 @@ -2530,8 +2558,8 @@ install -t /usr/share/licenses/gpgme -Dm644 COPYING COPYING.LESSER LICENSES cd .. rm -rf gpgme-1.17.1 # SQLite. -tar -xf sqlite-autoconf-3380200.tar.gz -cd sqlite-autoconf-3380200 +tar -xf sqlite-autoconf-3380300.tar.gz +cd sqlite-autoconf-3380300 CPPFLAGS="-DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_ENABLE_UNLOCK_NOTIFY=1 -DSQLITE_ENABLE_DBSTAT_VTAB=1 -DSQLITE_SECURE_DELETE=1 -DSQLITE_ENABLE_FTS3_TOKENIZER=1" ./configure --prefix=/usr --disable-static --enable-fts5 make make install @@ -2541,7 +2569,7 @@ The code and documentation of SQLite is dedicated to the public domain. See https://www.sqlite.org/copyright.html for more information. END cd .. -rm -rf sqlite-autoconf-3380200 +rm -rf sqlite-autoconf-3380300 # Cyrus SASL (rebuild to support krb5 and OpenLDAP). tar -xf cyrus-sasl-2.1.28.tar.gz cd cyrus-sasl-2.1.28 @@ -2721,8 +2749,8 @@ install -t /usr/share/licenses/nspr -Dm644 LICENSE cd ../.. rm -rf nspr-4.33 # NSS. -tar -xf nss-3.77.tar.gz -cd nss-3.77 +tar -xf nss-3.78.tar.gz +cd nss-3.78 patch -Np1 -i ../patches/nss-3.56-Standalone.patch cd nss make BUILD_OPT=1 NSPR_INCLUDE_DIR=/usr/include/nspr USE_SYSTEM_ZLIB=1 ZLIB_LIBS=-lz NSS_ENABLE_WERROR=0 USE_64=1 NSS_USE_SYSTEM_SQLITE=1 @@ -2737,10 +2765,10 @@ install -m644 Linux*/lib/pkgconfig/nss.pc /usr/lib/pkgconfig ln -sf ./pkcs11/p11-kit-trust.so /usr/lib/libnssckbi.so install -t /usr/share/licenses/nss -Dm644 ../nss/COPYING cd ../.. -rm -rf nss-3.77 +rm -rf nss-3.78 # Git. -tar -xf git-2.35.3.tar.xz -cd git-2.35.3 +tar -xf git-2.36.0.tar.xz +cd git-2.36.0 ./configure --prefix=/usr --with-gitconfig=/etc/gitconfig --with-python=python3 --with-libpcre2 make make man @@ -2748,7 +2776,7 @@ make perllibdir=/usr/lib/perl5/5.34/site_perl install make install-man install -t /usr/share/licenses/git -Dm644 COPYING LGPL-2.1 cd .. -rm -rf git-2.35.3 +rm -rf git-2.36.0 # libstemmer. tar -xf snowball-2.2.0.tar.gz cd snowball-2.2.0 @@ -2779,21 +2807,9 @@ tar -xf dkms-3.0.3.tar.gz make -C dkms-3.0.3 BASHDIR=/usr/share/bash-completion/completions install install -t /usr/share/licenses/dkms -Dm644 dkms-3.0.3/COPYING rm -rf dkms-3.0.3 -## xxhash. -tar -xf xxHash-0.8.1.tar.gz -cd xxHash-0.8.1 -make PREFIX=/usr CFLAGS="$CFLAGS -fPIC" -make PREFIX=/usr install -rm -f /usr/lib/libxxhash.a -ln -sf xxhsum.1 /usr/share/man/man1/xxh32sum.1 -ln -sf xxhsum.1 /usr/share/man/man1/xxh64sum.1 -ln -sf xxhsum.1 /usr/share/man/man1/xxh128sum.1 -install -t /usr/share/licenses/xxhash -Dm644 LICENSE -cd .. -rm -rf xxHash-0.8.1 # GLib. -tar -xf glib-2.72.0.tar.xz -cd glib-2.72.0 +tar -xf glib-2.72.1.tar.xz +cd glib-2.72.1 patch -Np1 -i ../patches/glib-2.72.0-lessnoisy.patch mkdir glib-build; cd glib-build meson --prefix=/usr --buildtype=release -Dman=true .. @@ -2801,7 +2817,7 @@ ninja ninja install install -t /usr/share/licenses/glib -Dm644 ../COPYING cd ../.. -rm -rf glib-2.72.0 +rm -rf glib-2.72.1 # GTK-Doc. tar -xf gtk-doc-1.33.2.tar.xz cd gtk-doc-1.33.2 @@ -2898,13 +2914,13 @@ install -t /usr/share/licenses/autoconf213 -Dm644 COPYING cd .. rm -rf autoconf-2.13 # LLVM/Clang/LLD. -tar -xf llvm-14.0.1.src.tar.xz +tar -xf llvm-14.0.3.src.tar.xz mkdir -p libunwind -tar -xf libunwind-14.0.1.src.tar.xz -C libunwind --strip-components=1 -cd llvm-14.0.1.src +tar -xf libunwind-14.0.3.src.tar.xz -C libunwind --strip-components=1 +cd llvm-14.0.3.src mkdir -p tools/{clang,lld} -tar -xf ../clang-14.0.1.src.tar.xz -C tools/clang --strip-components=1 -tar -xf ../lld-14.0.1.src.tar.xz -C tools/lld --strip-components=1 +tar -xf ../clang-14.0.3.src.tar.xz -C tools/clang --strip-components=1 +tar -xf ../lld-14.0.3.src.tar.xz -C tools/lld --strip-components=1 mkdir LLVM-build; cd LLVM-build CFLAGS="$CFLAGS -flarge-source-files" CXXFLAGS="$CXXFLAGS -flarge-source-files" cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=MinSizeRel -DLLVM_HOST_TRIPLE=x86_64-pc-linux-gnu -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DLLVM_ENABLE_FFI=ON -DLLVM_ENABLE_RTTI=ON -DLLVM_INCLUDE_BENCHMARKS=OFF -DLLVM_TARGETS_TO_BUILD="AMDGPU;BPF;X86" -DLLVM_BINUTILS_INCDIR=/usr/include -Wno-dev -G Ninja .. ninja -j$(nproc) @@ -2914,7 +2930,7 @@ ln -sf llvm /usr/share/licenses/clang ln -sf llvm /usr/share/licenses/lld cd ../.. rm -rf libunwind -rm -rf llvm-14.0.1.src +rm -rf llvm-14.0.3.src # Rust (will be uninstalled later). tar -xf rust-1.58.1-x86_64-unknown-linux-gnu.tar.gz cd rust-1.58.1-x86_64-unknown-linux-gnu @@ -2925,29 +2941,19 @@ rm -rf rust-1.58.1-x86_64-unknown-linux-gnu tar -xf firefox-91.8.0esr.source.tar.xz cd firefox-91.8.0 mkdir JS91-build; cd JS91-build -if mountpoint -q /dev/shm; then - beforemounted="true" -else - mount -t tmpfs devshm /dev/shm - beforemounted="false" -fi chmod +x ../js/src/configure.in -SHELL=/bin/sh ../js/src/configure.in --prefix=/usr --with-intl-api --with-system-zlib --with-system-icu --disable-jemalloc --disable-debug-symbols --enable-readline +SHELL=/bin/sh ../js/src/configure.in --prefix=/usr --enable-linker=lld --with-intl-api --with-system-zlib --with-system-icu --disable-jemalloc --disable-debug-symbols --enable-readline make make install rm -f /usr/lib/libjs_static.ajs sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js91-config -if [ "$beforemounted" = "false" ]; then - umount /dev/shm -fi -unset beforemounted install -t /usr/share/licenses/js91 -Dm644 ../../extra-package-licenses/js91-license.txt cd ../.. rm -rf firefox-91.8.0 # Sudo. tar -xf sudo-1.9.10.tar.gz cd sudo-1.9.10 -./configure --prefix=/usr --libexecdir=/usr/lib --with-secure-path --with-all-insults --with-env-editor --with-passprompt="[sudo] password for %p: " +./configure --prefix=/usr --libexecdir=/usr/lib --disable-pie --with-linux-audit --with-secure-path --with-insults --with-all-insults --with-passwd-tries=5 --with-env-editor --with-passprompt="[sudo] password for %p: " make make install ln -sf libsudo_util.so.0.0.0 /usr/lib/sudo/libsudo_util.so.0 @@ -3006,7 +3012,7 @@ install -t /usr/share/licenses/efivar -Dm644 COPYING cd .. rm -rf efivar-38 # efibootmgr. -tar -xf efibootmgr_17.orig.tar.gz +tar -xf efibootmgr-17.tar.bz2 cd efibootmgr-17 sed -e '/extern int efi_set_verbose/d' -i src/efibootmgr.c make EFIDIR=massos EFI_LOADER=grubx64.efi @@ -3027,6 +3033,7 @@ rm -rf libpng-1.6.37 # FreeType (circular dependency; will be rebuilt later to support HarfBuzz). tar -xf freetype-2.12.0.tar.xz cd freetype-2.12.0 +patch -Np1 -i ../patches/freetype-2.12.0-FixSegfault.patch sed -ri "s:.*(AUX_MODULES.*valid):\1:" modules.cfg sed -r "s:.*(#.*SUBPIXEL_RENDERING) .*:\1:" -i include/freetype/config/ftoption.h ./configure --prefix=/usr --enable-freetype-config --disable-static --with-harfbuzz=no @@ -3047,18 +3054,19 @@ install -t /usr/share/licenses/graphite2 -Dm644 ../COPYING ../LICENSE cd ../.. rm -rf graphite2-1.3.14 # HarfBuzz. -tar -xf harfbuzz-4.2.0.tar.xz -cd harfbuzz-4.2.0 +tar -xf harfbuzz-4.2.1.tar.xz +cd harfbuzz-4.2.1 mkdir hb-build; cd hb-build meson --prefix=/usr --buildtype=release -Dgraphite2=enabled .. ninja ninja install install -t /usr/share/licenses/harfbuzz -Dm644 ../COPYING cd ../.. -rm -rf harfbuzz-4.2.0 +rm -rf harfbuzz-4.2.1 # FreeType (rebuild to support HarfBuzz). tar -xf freetype-2.12.0.tar.xz cd freetype-2.12.0 +patch -Np1 -i ../patches/freetype-2.12.0-FixSegfault.patch sed -ri "s:.*(AUX_MODULES.*valid):\1:" modules.cfg sed -r "s:.*(#.*SUBPIXEL_RENDERING) .*:\1:" -i include/freetype/config/ftoption.h ./configure --prefix=/usr --enable-freetype-config --disable-static --with-harfbuzz=yes @@ -3088,18 +3096,17 @@ cd ../.. rm -rf woff2-1.0.2 # Unifont. mkdir -p /usr/share/fonts/unifont -pigz -cd unifont-14.0.02.pcf.gz > /usr/share/fonts/unifont/unifont.pcf +pigz -cd unifont-14.0.03.pcf.gz > /usr/share/fonts/unifont/unifont.pcf install -t /usr/share/licenses/unifont -Dm644 extra-package-licenses/LICENSE-unifont.txt # GRUB. tar -xf grub-2.06.tar.xz cd grub-2.06 mkdir build-pc; cd build-pc -unset CFLAGS CXXFLAGS -../configure --prefix=/usr --sysconfdir=/etc --disable-efiemu --enable-grub-mkfont --enable-grub-mount --with-platform=pc --disable-werror +CFLAGS="-O2" CXXFLAGS="-O2" ../configure --prefix=/usr --sysconfdir=/etc --disable-efiemu --enable-grub-mkfont --enable-grub-mount --with-platform=pc --disable-werror make cd .. mkdir build-efi; cd build-efi -../configure --prefix=/usr --sysconfdir=/etc --disable-efiemu --enable-grub-mkfont --enable-grub-mount --with-platform=efi --disable-werror +CFLAGS="-O2" CXXFLAGS="-O2" ../configure --prefix=/usr --sysconfdir=/etc --disable-efiemu --enable-grub-mkfont --enable-grub-mount --with-platform=efi --disable-werror make make bashcompletiondir="/usr/share/bash-completion/completions" install cd ../build-pc @@ -3170,9 +3177,6 @@ END install -t /usr/share/licenses/grub -Dm644 ../COPYING cd ../.. rm -rf grub-2.06 -CFLAGS="-w -Os -pipe" -CXXFLAGS="-w -Os -pipe" -export CFLAGS CXXFLAGS # os-prober. tar -xf os-prober_1.79.tar.xz cd os-prober @@ -3251,23 +3255,23 @@ install -t /usr/share/licenses/libgudev -Dm644 ../COPYING cd ../.. rm -rf libgudev-237 # libmbim. -tar -xf libmbim-1.26.2.tar.xz -cd libmbim-1.26.2 +tar -xf libmbim-1.26.4.tar.xz +cd libmbim-1.26.4 ./configure --prefix=/usr --disable-static make make install install -t /usr/share/licenses/libmbim -Dm644 COPYING COPYING.LIB cd .. -rm -rf libmbim-1.26.2 +rm -rf libmbim-1.26.4 # libqmi. -tar -xf libqmi-1.30.4.tar.xz -cd libqmi-1.30.4 +tar -xf libqmi-1.30.6.tar.xz +cd libqmi-1.30.6 ./configure --prefix=/usr --disable-static make make install install -t /usr/share/licenses/libqmi -Dm644 COPYING COPYING.LIB cd .. -rm -rf libqmi-1.30.4 +rm -rf libqmi-1.30.6 # libwacom. tar -xf libwacom-2.2.0.tar.xz cd libwacom-2.2.0 @@ -3328,14 +3332,14 @@ make install cd .. rm -rf aspell6-en-2020.12.07-0 # Enchant. -tar -xf enchant-2.3.2.tar.gz -cd enchant-2.3.2 +tar -xf enchant-2.3.3.tar.gz +cd enchant-2.3.3 ./configure --prefix=/usr --disable-static make make install install -t /usr/share/licenses/enchant -Dm644 COPYING.LIB cd .. -rm -rf enchant-2.3.2 +rm -rf enchant-2.3.3 # Fontconfig. tar -xf fontconfig-2.14.0.tar.bz2 cd fontconfig-2.14.0 @@ -3347,15 +3351,15 @@ install -t /usr/share/licenses/fontconfig -Dm644 ../COPYING cd ../.. rm -rf fontconfig-2.14.0 # Fribidi. -tar -xf fribidi-1.0.11.tar.xz -cd fribidi-1.0.11 -mkdir BIDIRECTIONAL-build; cd BIDIRECTIONAL-build +tar -xf fribidi-1.0.12.tar.xz +cd fribidi-1.0.12 +mkdir fribidi-build; cd fribidi-build meson --prefix=/usr --buildtype=release .. ninja ninja install install -t /usr/share/licenses/fribidi -Dm644 ../COPYING cd ../.. -rm -rf fribidi-1.0.11 +rm -rf fribidi-1.0.12 # giflib. tar -xf giflib-5.2.1.tar.gz cd giflib-5.2.1 @@ -3378,14 +3382,9 @@ rm -rf libexif-0.6.23 tar -xf lolcat-1.2.tar.gz cd lolcat-1.2 make CFLAGS="$CFLAGS" -install -Dt /usr/bin -m755 censor lolcat -install -dm755 /usr/share/licenses/lolcat -cat > /usr/share/licenses/lolcat/LICENSE << "END" -The license covering this software is equivalent to a public domain dedication, -however the license document contains profanity, therefore it has not been -included here. If you still wish to view the license document, it is can be -viewed online at https://github.com/jaseg/lolcat/blob/main/LICENSE. -END +install -t /usr/bin -Dm755 censor lolcat +help2man lolcat > /usr/share/man/man1/lolcat.1 +install -t /usr/share/licenses/lolcat -Dm644 LICENSE cd .. rm -rf lolcat-1.2 # NASM. @@ -3501,14 +3500,14 @@ install -t /usr/share/licenses/p7zip -Dm644 DOC/License.txt cd .. rm -rf p7zip-17.04-6-geb1bbb0 # Ruby. -tar -xf ruby-3.1.1.tar.xz -cd ruby-3.1.1 +tar -xf ruby-3.1.2.tar.xz +cd ruby-3.1.2 ./configure --prefix=/usr --enable-shared make make install install -t /usr/share/licenses/ruby -Dm644 COPYING cd .. -rm -rf ruby-3.1.1 +rm -rf ruby-3.1.2 # slang. tar -xf slang-pre2.3.3-66.tar.gz cd slang-pre2.3.3-66 @@ -3521,8 +3520,8 @@ install -t /usr/share/licenses/slang -Dm644 COPYING cd .. rm -rf slang-pre2.3.3-66 # BIND Utils. -tar -xf bind-9.18.1.tar.xz -cd bind-9.18.1 +tar -xf bind-9.18.2.tar.xz +cd bind-9.18.2 ./configure --prefix=/usr --with-json-c --with-libidn2 --with-libxml2 --with-lmdb --with-openssl make -C lib/isc make -C lib/dns @@ -3542,7 +3541,7 @@ make -C bin/dig install install -Dm644 doc/man/{dig.1,host.1,nslookup.1} /usr/share/man/man1 install -t /usr/share/licenses/bind-utils -Dm644 COPYRIGHT LICENSE cd .. -rm -rf bind-9.18.1 +rm -rf bind-9.18.2 # dhclient. tar -xf dhcp-4.4.3.tar.gz cd dhcp-4.4.3 @@ -3580,14 +3579,14 @@ install -t /usr/share/licenses/xdg-utils -Dm644 LICENSE cd .. rm -rf xdg-utils-1.1.3 # libnl. -tar -xf libnl-3.5.0.tar.gz -cd libnl-3.5.0 +tar -xf libnl-3.6.0.tar.gz +cd libnl-3.6.0 ./configure --prefix=/usr --sysconfdir=/etc --disable-static make make install install -t /usr/share/licenses/libnl -Dm644 COPYING cd .. -rm -rf libnl-3.5.0 +rm -rf libnl-3.6.0 # wpa_supplicant. tar -xf wpa_supplicant-2.10.tar.gz cd wpa_supplicant-2.10/wpa_supplicant @@ -3680,15 +3679,15 @@ install -t /usr/share/licenses/util-macros -Dm644 COPYING cd .. rm -rf util-macros-1.19.3 # xorgproto. -tar -xf xorgproto-2021.5.tar.bz2 -cd xorgproto-2021.5 +tar -xf xorgproto-2022.1.tar.bz2 +cd xorgproto-2022.1 mkdir xorgproto-build; cd xorgproto-build meson --prefix=/usr -Dlegacy=true .. ninja ninja install install -t /usr/share/licenses/xorgproto -Dm644 ../COPYING* cd ../.. -rm -rf xorgproto-2021.5 +rm -rf xorgproto-2022.1 # libXau. tar -xf libXau-1.0.9.tar.bz2 cd libXau-1.0.9 @@ -3831,17 +3830,27 @@ ninja install install -t /usr/share/licenses/libvdpau -Dm644 ../COPYING cd ../.. rm -rf libvdpau-1.5 +# libglvnd. +tar -xf libglvnd-v1.4.0.tar.bz2 +cd libglvnd-v1.4.0 +cat README.md | tail -n211 | head -n22 | sed 's/ //g' > COPYING +mkdir glvnd-build; cd glvnd-build +meson --prefix=/usr --buildtype=release .. +ninja +ninja install +install -t /usr/share/licenses/libglvnd -Dm644 ../COPYING +cd ../.. +rm -rf libglvnd-v1.4.0 # Mesa. -tar -xf mesa-22.0.1.tar.xz -cd mesa-22.0.1 -patch -Np1 -i ../patches/mesa-21.3.3-xdemos.patch +tar -xf mesa-22.0.2.tar.xz +cd mesa-22.0.2 mkdir mesa-build; cd mesa-build -meson --prefix=/usr --buildtype=release -Dgallium-drivers="crocus,d3d12,i915,iris,nouveau,r300,r600,radeonsi,svga,swrast,virgl,zink" -Dvulkan-drivers="amd,intel,swrast" -Dvulkan-layers="device-select,intel-nullhw,overlay" -Dgallium-nine=false -Dglx=dri -Dvalgrind=disabled .. +meson --prefix=/usr --buildtype=release -Dgallium-drivers="crocus,d3d12,i915,iris,nouveau,r300,r600,radeonsi,svga,swrast,virgl,zink" -Dvulkan-drivers="amd,intel,swrast" -Dvulkan-layers="device-select,intel-nullhw,overlay" -Dgallium-nine=false -Dglvnd=true -Dglx=dri -Dosmesa=true -Dvalgrind=disabled .. ninja ninja install install -t /usr/share/licenses/mesa -Dm644 ../docs/license.rst cd ../.. -rm -rf mesa-22.0.1 +rm -rf mesa-22.0.2 # libva (rebuild to support Mesa). tar -xf libva-2.14.0.tar.bz2 cd libva-2.14.0 @@ -3859,7 +3868,7 @@ install -t /usr/share/licenses/xbitmaps -Dm644 COPYING cd .. rm -rf xbitmaps-1.1.2 # Xorg Applications. -for i in iceauth-1.0.9 luit-1.1.1 mkfontscale-1.2.2 sessreg-1.1.2 setxkbmap-1.3.3 smproxy-1.0.6 x11perf-1.6.1 xauth-1.1.1 xbacklight-1.2.3 xcmsdb-1.0.5 xcursorgen-1.0.7 xdpyinfo-1.3.3 xdriinfo-1.0.6 xev-1.2.4 xgamma-1.0.6 xhost-1.0.8 xinput-1.6.3 xkbcomp-1.4.5 xkbevd-1.1.4 xkbutils-1.0.4 xkill-1.0.5 xlsatoms-1.1.3 xlsclients-1.1.4 xmessage-1.0.5 xmodmap-1.0.10 xpr-1.0.5 xprop-1.2.5 xrandr-1.5.1 xrdb-1.2.1 xrefresh-1.0.6 xset-1.2.4 xsetroot-1.1.2 xvinfo-1.1.4 xwd-1.0.8 xwininfo-1.1.5 xwud-1.0.5; do +for i in iceauth-1.0.9 luit-1.1.1 mkfontscale-1.2.2 sessreg-1.1.2 setxkbmap-1.3.3 smproxy-1.0.6 x11perf-1.6.1 xauth-1.1.2 xbacklight-1.2.3 xcmsdb-1.0.5 xcursorgen-1.0.7 xdpyinfo-1.3.3 xdriinfo-1.0.6 xev-1.2.4 xgamma-1.0.6 xhost-1.0.8 xinput-1.6.3 xkbcomp-1.4.5 xkbevd-1.1.4 xkbutils-1.0.4 xkill-1.0.5 xlsatoms-1.1.3 xlsclients-1.1.4 xmessage-1.0.5 xmodmap-1.0.10 xpr-1.0.5 xprop-1.2.5 xrandr-1.5.1 xrdb-1.2.1 xrefresh-1.0.6 xset-1.2.4 xsetroot-1.1.2 xvinfo-1.1.4 xwd-1.0.8 xwininfo-1.1.5 xwud-1.0.5; do tar -xf $i.tar.* cd $i case $i in @@ -4043,15 +4052,15 @@ install -t /usr/share/licenses/xf86-input-evdev -Dm644 COPYING cd .. rm -rf xf86-input-evdev-2.10.6 # libinput. -tar -xf libinput-1.20.0.tar.bz2 -cd libinput-1.20.0 +tar -xf libinput-1.20.1.tar.bz2 +cd libinput-1.20.1 mkdir libinput-build; cd libinput-build meson --prefix=/usr --buildtype=release -Ddebug-gui=false -Dtests=false -Ddocumentation=false .. ninja ninja install install -t /usr/share/licenses/libinput -Dm644 ../COPYING cd ../.. -rm -rf libinput-1.20.0 +rm -rf libinput-1.20.1 # xf86-input-libinput. tar -xf xf86-input-libinput-1.2.1.tar.xz cd xf86-input-libinput-1.2.1 @@ -4376,24 +4385,24 @@ install -t /usr/share/licenses/cairomm -Dm644 ../COPYING cd ../.. rm -rf cairomm-1.14.0 # HarfBuzz (rebuild to support Cairo). -tar -xf harfbuzz-4.2.0.tar.xz -cd harfbuzz-4.2.0 +tar -xf harfbuzz-4.2.1.tar.xz +cd harfbuzz-4.2.1 mkdir hb-build; cd hb-build meson --prefix=/usr --buildtype=release -Dgraphite2=enabled .. ninja ninja install cd ../.. -rm -rf harfbuzz-4.2.0 +rm -rf harfbuzz-4.2.1 # Pango. -tar -xf pango-1.50.6.tar.xz -cd pango-1.50.6 +tar -xf pango-1.50.7.tar.xz +cd pango-1.50.7 mkdir pango-build; cd pango-build meson --prefix=/usr --buildtype=release .. ninja ninja install install -t /usr/share/licenses/pango -Dm644 ../COPYING cd ../.. -rm -rf pango-1.50.6 +rm -rf pango-1.50.7 # Pangomm. tar -xf pangomm-2.46.2.tar.xz cd pangomm-2.46.2 @@ -4483,14 +4492,14 @@ install -t /usr/share/licenses/graphviz -Dm644 COPYING cd .. rm -rf graphviz-3.0.0 # Vala. -tar -xf vala-0.56.0.tar.xz -cd vala-0.56.0 +tar -xf vala-0.56.1.tar.xz +cd vala-0.56.1 ./configure --prefix=/usr make make install install -t /usr/share/licenses/vala -Dm644 COPYING cd .. -rm -rf vala-0.56.0 +rm -rf vala-0.56.1 # libgusb. tar -xf libgusb-0.3.10.tar.xz cd libgusb-0.3.10 @@ -4502,15 +4511,15 @@ install -t /usr/share/licenses/libgusb -Dm644 ../COPYING cd ../.. rm -rf libgusb-0.3.10 # librsvg. -tar -xf librsvg-2.54.0.tar.xz -cd librsvg-2.54.0 +tar -xf librsvg-2.54.1.tar.xz +cd librsvg-2.54.1 ./configure --prefix=/usr --enable-vala --disable-static make make install gdk-pixbuf-query-loaders --update-cache install -t /usr/share/licenses/librsvg -Dm644 COPYING.LIB cd .. -rm -rf librsvg-2.54.0 +rm -rf librsvg-2.54.1 # adwaita-icon-theme. tar -xf adwaita-icon-theme-41.0.tar.xz cd adwaita-icon-theme-41.0 @@ -4521,15 +4530,15 @@ install -t /usr/share/licenses/adwaita-icon-theme -Dm644 COPYING COPYING_CCBYSA3 cd .. rm -rf adwaita-icon-theme-41.0 # at-spi2-core. -tar -xf at-spi2-core-2.44.0.tar.xz -cd at-spi2-core-2.44.0 +tar -xf at-spi2-core-2.44.1.tar.xz +cd at-spi2-core-2.44.1 mkdir spi2-build; cd spi2-build meson --prefix=/usr --buildtype=release .. ninja ninja install install -t /usr/share/licenses/at-spi2-core -Dm644 ../COPYING cd ../.. -rm -rf at-spi2-core-2.44.0 +rm -rf at-spi2-core-2.44.1 # at-spi2-atk. tar -xf at-spi2-atk-2.38.0.tar.xz cd at-spi2-atk-2.38.0 @@ -4544,6 +4553,7 @@ rm -rf at-spi2-atk-2.38.0 # GTK3. tar -xf gtk+-3.24.33.tar.xz cd gtk+-3.24.33 +git apply ../patches/gtk3-3.24.33-missingicons.patch ./configure --prefix=/usr --sysconfdir=/etc --enable-broadway-backend --enable-x11-backend --enable-wayland-backend make make install @@ -4587,15 +4597,15 @@ gtk-xft-rgba = rgb gtk-cursor-theme-name = Adwaita END # libhandy. -tar -xf libhandy-1.6.1.tar.xz -cd libhandy-1.6.1 +tar -xf libhandy-1.6.2.tar.xz +cd libhandy-1.6.2 mkdir handy-build; cd handy-build meson --prefix=/usr --buildtype=release .. ninja ninja install install -t /usr/share/licenses/libhandy -Dm644 ../COPYING cd ../.. -rm -rf libhandy-1.6.1 +rm -rf libhandy-1.6.2 # libdazzle. tar -xf libdazzle-3.44.0.tar.xz cd libdazzle-3.44.0 @@ -4658,16 +4668,15 @@ install -t /usr/share/licenses/pycairo -Dm644 COPYING COPYING-LGPL-2.1 cd .. rm -rf pycairo-1.21.0 # PyGObject. -tar -xf pygobject-3.42.0.tar.xz -cd pygobject-3.42.0 -mv tests/test_gdbus.py{,.nouse} +tar -xf pygobject-3.42.1.tar.xz +cd pygobject-3.42.1 mkdir pygo-build; cd pygo-build -meson --prefix=/usr --buildtype=release .. +meson --prefix=/usr --buildtype=release -Dtests=false .. ninja ninja install install -t /usr/share/licenses/pygobject -Dm644 ../COPYING cd ../.. -rm -rf pygobject-3.42.0 +rm -rf pygobject-3.42.1 # gexiv2. tar -xf gexiv2-0.14.0.tar.xz cd gexiv2-0.14.0 @@ -4801,14 +4810,14 @@ install -t /usr/share/licenses/libsamplerate -Dm644 COPYING cd .. rm -rf libsamplerate-0.2.2 # JACK2. -tar -xf jack2-1.9.20.tar.gz -cd jack2-1.9.20 +tar -xf jack2-1.9.21.tar.gz +cd jack2-1.9.21 ./waf configure --prefix=/usr --htmldir=/usr/share/doc/jack2 --autostart=none --classic --dbus --systemd-unit ./waf build -j$(nproc) ./waf install install -t /usr/share/licenses/jack2 -Dm644 COPYING cd .. -rm -rf jack2-1.9.20 +rm -rf jack2-1.9.21 # SBC. tar -xf sbc-1.5.tar.xz cd sbc-1.5 @@ -4889,15 +4898,15 @@ make install cd .. rm -rf SDL-1.2.15 # SDL2. -tar -xf SDL2-2.0.20.tar.gz -cd SDL2-2.0.20 +tar -xf SDL2-2.0.22.tar.gz +cd SDL2-2.0.22 ./configure --prefix=/usr make make install rm -f /usr/lib/libSDL2*.a install -t /usr/share/licenses/sdl2 -Dm644 LICENSE.txt cd .. -rm -rf SDL2-2.0.20 +rm -rf SDL2-2.0.22 # dmidecode. tar -xf dmidecode-3.3.tar.xz cd dmidecode-3.3 @@ -4981,8 +4990,8 @@ install -t /usr/share/licenses/ppp -Dm644 ../extra-package-licenses/ppp-license. cd .. rm -rf ppp-2.4.9 # Vim. -tar -xf vim-8.2.4700.tar.gz -cd vim-8.2.4700 +tar -xf vim-8.2.4826.tar.gz +cd vim-8.2.4826 echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h echo '#define SYS_GVIMRC_FILE "/etc/gvimrc"' >> src/feature.h ./configure --prefix=/usr --with-features=huge --enable-gpm --enable-gui=gtk3 --with-tlib=ncursesw --enable-perlinterp --enable-python3interp --enable-rubyinterp --enable-tclinterp --with-tclsh=tclsh --with-compiledby="MassOS" @@ -5005,7 +5014,7 @@ rm -f /usr/share/applications/vim.desktop rm -f /usr/share/applications/gvim.desktop install -t /usr/share/licenses/vim -Dm644 LICENSE cd .. -rm -rf vim-8.2.4700 +rm -rf vim-8.2.4826 # libwpe. tar -xf libwpe-1.12.0.tar.xz cd libwpe-1.12.0 @@ -5429,7 +5438,7 @@ rm -rf Parse-Yapp-1.21 # smbclient (client portion of Samba). tar -xf samba-4.16.0.tar.gz cd samba-4.16.0 -./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-pammodulesdir=/usr/lib/security --with-piddir=/run/samba --systemd-install-services --enable-fhs --with-acl-support --with-ads --with-cluster-support --with-ldap --with-pam --with-profiling-data --with-systemd --with-winbind +./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-pammodulesdir=/usr/lib/security --with-piddir=/run/samba --systemd-install-services --enable-fhs --without-pie --with-acl-support --with-ads --with-cluster-support --with-ldap --with-pam --with-profiling-data --with-systemd --with-winbind make mkdir -p /run/lock make install @@ -5462,14 +5471,14 @@ install -t /usr/share/licenses/mobile-broadband-provider-info -Dm644 COPYING cd .. rm -rf mobile-broadband-provider-info-20220315 # ModemManager. -tar -xf ModemManager-1.18.6.tar.xz -cd ModemManager-1.18.6 +tar -xf ModemManager-1.18.8.tar.xz +cd ModemManager-1.18.8 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-systemd-journal --with-systemd-suspend-resume --disable-static make make install install -t /usr/share/licenses/modemmanager -Dm644 COPYING COPYING.LIB cd .. -rm -rf ModemManager-1.18.6 +rm -rf ModemManager-1.18.8 # libndp. tar -xf libndp_1.8.orig.tar.gz cd libndp-1.8 @@ -5555,15 +5564,15 @@ install -t /usr/share/licenses/libnma -Dm644 ../COPYING ../COPYING.LGPL cd ../.. rm -rf libnma-1.8.38 # libnotify. -tar -xf libnotify-0.7.9.tar.xz -cd libnotify-0.7.9 +tar -xf libnotify-0.7.11.tar.xz +cd libnotify-0.7.11 mkdir notify-build; cd notify-build -meson --prefix=/usr --buildtype=release -Dman=false .. +meson --prefix=/usr --buildtype=release -Dman=false -Dtests=false .. ninja ninja install install -t /usr/share/licenses/libnotify -Dm644 ../COPYING cd ../.. -rm -rf libnotify-0.7.9 +rm -rf libnotify-0.7.11 # startup-notification. tar -xf startup-notification-0.12.tar.gz cd startup-notification-0.12 @@ -5675,15 +5684,15 @@ install -t /usr/share/licenses/libxmlb -Dm644 ../LICENSE cd ../.. rm -rf libxmlb-0.3.6 # AppStream. -tar -xf AppStream-0.15.2.tar.xz -cd AppStream-0.15.2 +tar -xf AppStream-0.15.3.tar.xz +cd AppStream-0.15.3 mkdir appstream-build; cd appstream-build meson --prefix=/usr --buildtype=release -Dvapi=true -Dcompose=true .. ninja ninja install install -t /usr/share/licenses/appstream -Dm644 ../COPYING cd ../.. -rm -rf AppStream-0.15.2 +rm -rf AppStream-0.15.3 # appstream-glib. tar -xf appstream_glib_0_7_18.tar.gz cd appstream-glib-appstream_glib_0_7_18 @@ -5759,14 +5768,14 @@ install -t /usr/share/licenses/geoclue -Dm644 ../COPYING ../COPYING.LIB cd ../.. rm -rf geoclue-2.6.0 # xdg-desktop-portal. -tar -xf xdg-desktop-portal-1.14.2.tar.xz -cd xdg-desktop-portal-1.14.2 +tar -xf xdg-desktop-portal-1.14.3.tar.xz +cd xdg-desktop-portal-1.14.3 ./configure --prefix=/usr --disable-pipewire make make install install -t /usr/share/licenses/xdg-desktop-portal -Dm644 COPYING cd .. -rm -rf xdg-desktop-portal-1.14.2 +rm -rf xdg-desktop-portal-1.14.3 # xdg-desktop-portal-gtk. tar -xf xdg-desktop-portal-gtk-1.14.0.tar.xz cd xdg-desktop-portal-gtk-1.14.0 @@ -6069,16 +6078,16 @@ install -t /usr/share/licenses/vmaf -Dm644 ../../LICENSE cd ../../.. rm -rf vmaf-2.3.0 # FFmpeg. -tar -xf ffmpeg-5.0.tar.xz -cd ffmpeg-5.0 -./configure --prefix=/usr --disable-debug --disable-nonfree --disable-static --enable-alsa --enable-bzlib --enable-gnutls --enable-gmp --enable-gpl --enable-iconv --enable-libass --enable-libbluray --enable-libcdio --enable-libdav1d --enable-libdrm --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libiec61883 --enable-libjack --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librsvg --enable-librtmp --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxcb-shape --enable-libxcb-shm --enable-libxcb-xfixes --enable-libxml2 --enable-opengl --enable-sdl2 --enable-shared --enable-small --enable-vaapi --enable-vdpau --enable-version3 --enable-vulkan --enable-xlib --enable-zlib +tar -xf ffmpeg-5.0.1.tar.xz +cd ffmpeg-5.0.1 +./configure --prefix=/usr --disable-debug --disable-nonfree --disable-static --enable-alsa --enable-bzlib --enable-gmp --enable-gpl --enable-iconv --enable-libass --enable-libbluray --enable-libcdio --enable-libdav1d --enable-libdrm --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libiec61883 --enable-libjack --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librsvg --enable-librtmp --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxcb-shape --enable-libxcb-shm --enable-libxcb-xfixes --enable-libxml2 --enable-opengl --enable-openssl --enable-sdl2 --enable-shared --enable-small --enable-vaapi --enable-vdpau --enable-version3 --enable-vulkan --enable-xlib --enable-zlib make gcc $CFLAGS tools/qt-faststart.c -o tools/qt-faststart make install install -m755 tools/qt-faststart /usr/bin install -t /usr/share/licenses/ffmpeg -Dm644 COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1 COPYING.LGPLv3 LICENSE.md cd .. -rm -rf ffmpeg-5.0 +rm -rf ffmpeg-5.0.1 # OpenAL. tar -xf openal-soft-1.21.1.tar.gz cd openal-soft-1.21.1/build @@ -6199,14 +6208,14 @@ install -t /usr/share/licenses/libchamplain -Dm644 ../COPYING cd ../.. rm -rf libchamplain-0.12.20 # gspell. -tar -xf gspell-1.9.1.tar.xz -cd gspell-1.9.1 +tar -xf gspell-1.10.0.tar.xz +cd gspell-1.10.0 ./configure --prefix=/usr make make install install -t /usr/share/licenses/gspell -Dm644 COPYING cd .. -rm -rf gspell-1.9.1 +rm -rf gspell-1.10.0 # gnome-online-accounts. tar -xf gnome-online-accounts-3.44.0.tar.xz cd gnome-online-accounts-3.44.0 @@ -6228,9 +6237,8 @@ install -t /usr/share/licenses/libgdata -Dm644 ../COPYING cd ../.. rm -rf libgdata-0.18.1 # GVFS. -tar -xf gvfs-1.50.0.tar.xz -cd gvfs-1.50.0 -patch -Np1 -i ../patches/gvfs-1.50.0-upstreamfix.patch +tar -xf gvfs-1.50.1.tar.xz +cd gvfs-1.50.1 mkdir gvfs-build; cd gvfs-build meson --prefix=/usr --buildtype=release -Dman=true .. ninja @@ -6238,7 +6246,7 @@ ninja install glib-compile-schemas /usr/share/glib-2.0/schemas install -t /usr/share/licenses/gvfs -Dm644 ../COPYING cd ../.. -rm -rf gvfs-1.50.0 +rm -rf gvfs-1.50.1 # libxfce4util. tar -xf libxfce4util-4.17.2.tar.bz2 cd libxfce4util-4.17.2 @@ -6330,14 +6338,14 @@ install -t /usr/share/licenses/xfce4-artwork -Dm644 COPYING cd .. rm -rf xfce4-artwork-0.1.1a # xfce4-panel. -tar -xf xfce4-panel-4.16.3.tar.bz2 -cd xfce4-panel-4.16.3 +tar -xf xfce4-panel-4.16.4.tar.bz2 +cd xfce4-panel-4.16.4 ./configure --prefix=/usr --sysconfdir=/etc make make install install -t /usr/share/licenses/xfce4-panel -Dm644 COPYING cd .. -rm -rf xfce4-panel-4.16.3 +rm -rf xfce4-panel-4.16.4 # xfce4-power-manager. tar -xf xfce4-power-manager-4.16.0.tar.bz2 cd xfce4-power-manager-4.16.0 @@ -6423,14 +6431,14 @@ install -t /usr/share/licenses/xfburn -Dm644 COPYING cd .. rm -rf xfburn-0.6.2 # xfce4-terminal. -tar -xf xfce4-terminal-1.0.1.tar.bz2 -cd xfce4-terminal-1.0.1 +tar -xf xfce4-terminal-1.0.2.tar.bz2 +cd xfce4-terminal-1.0.2 ./configure --prefix=/usr make make install install -t /usr/share/licenses/xfce4-terminal -Dm644 COPYING cd .. -rm -rf xfce4-terminal-1.0.1 +rm -rf xfce4-terminal-1.0.2 # Shotwell. tar -xf shotwell-0.31.3-133-gd55abab2.tar.xz cd shotwell-0.31.3-133-gd55abab2 @@ -6640,15 +6648,15 @@ install -t /usr/share/licenses/mugshot -Dm644 COPYING cd .. rm -rf mugshot-0.4.3 # Evince. -tar -xf evince-42.1.tar.xz -cd evince-42.1 +tar -xf evince-42.2.tar.xz +cd evince-42.2 mkdir build; cd build meson --prefix=/usr --buildtype=release -Dnautilus=false .. ninja ninja install install -t /usr/share/licenses/evince -Dm644 ../COPYING cd ../.. -rm -rf evince-42.1 +rm -rf evince-42.2 # Baobab. tar -xf baobab-41.0.tar.xz cd baobab-41.0 @@ -6868,7 +6876,7 @@ cat > /usr/share/licenses/firefox/LICENSE << "END" Please type 'about:license' in the Firefox URL box to view the Firefox license. END # Thunderbird. -tar --no-same-owner -xf thunderbird-91.7.0.tar.bz2 -C /usr/lib +tar --no-same-owner -xf thunderbird-91.8.1.tar.bz2 -C /usr/lib mkdir -p /usr/lib/thunderbird/distribution cat > /usr/lib/thunderbird/distribution/policies.json << END { @@ -6907,13 +6915,13 @@ install -t /usr/share/licenses/busybox -Dm644 LICENSE cd .. rm -rf busybox-1.35.0 # Linux Kernel. -KVER=5.17.3 +KVER=5.17.5 tar -xf linux-$KVER.tar.xz cd linux-$KVER cp ../kernel-config .config make olddefconfig make -make INSTALL_MOD_STRIP=1 modules_install +make INSTALL_MOD_PATH=/usr INSTALL_MOD_STRIP=1 modules_install cp arch/x86/boot/bzImage /boot/vmlinuz-$KVER-massos cp arch/x86/boot/bzImage /usr/lib/modules/$KVER-massos/vmlinuz cp System.map /boot/System.map-$KVER-massos diff --git a/changelog.md b/changelog.md index d2422c7..af398ad 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,77 @@ # Full Changelog History This document contains the full changelog for every previous versions of MassOS, as well as the changes currently in development for the next upcoming version of MassOS (which may be subject to change before the version is finally released). +# MassOS 2022.05 +Changes: + +- Added TPM2 support. This allows programs like systemd to utilise TPM2 chips. It **does not** make TPM2 a system requirement. +- The default initramfs filename is now `initramfs-.img` instead of `initrd.img-`. This fixes the `lsinitrd` program. +- Added libglvnd to provide additional graphics libraries which some packages depend on. It also provides some existing Mesa libs, however does not conflict with Mesa. +- Fixed issues with zlib and GTK3. + +Upgraded software: + +- AppStream: `0.15.2 --> 0.15.3` +- at-spi2-core: `2.44.0 --> 2.44.1` +- bc: `5.2.3 --> 5.2.4` +- BIND Utils: `9.18.1 --> 9.18.2` +- Boost: `1.78.0 --> 1.79.0` +- btrfs-progs: `5.16.2 --> 5.17` +- Coreutils: `9.0 --> 9.1` +- curl: `7.82.0 --> 7.83.0` +- dialog: `1.3-20220117 --> 1.3-20220414` +- elfutils: `0.186 --> 0.187` +- Enchant: `2.3.2 --> 2.3.3` +- Evince: `42.1 --> 42.2` +- FFmpeg: `5.0 --> 5.0.1` +- Fribidi: `1.0.11 --> 1.0.12` +- GCC: `11.2.0 --> 11.3.0` +- Git: `2.35.3 --> 2.36.0` +- GLib: `2.72.0 --> 2.72.1` +- GNUPG: `2.3.4 --> 2.3.6` +- gptfdisk: `1.0.8 --> 1.0.9` +- gspell: `1.9.1 --> 1.10.0` +- GVFS: `1.50.0 --> 1.50.1` +- HarfBuzz: `4.2.0 --> 4.2.1` +- iana-etc: `20220401 --> 20220414` +- libhandy: `1.6.1 --> 1.6.2` +- libinput: `1.20.0 --> 1.20.1` +- libmbim: `1.26.2 --> 1.26.4` +- libnl: `3.5.0 --> 3.6.0` +- libnotify: `0.7.9 --> 0.7.11` +- libpipeline: `1.5.5 --> 1.5.6` +- libqmi: `1.30.4 --> 1.30.6` +- librsvg: `2.54.0 --> 2.54.1` +- libseccomp: `2.5.3 --> 2.5.4` +- Linux Kernel: `5.17.3 --> 5.17.5` +- LLVM/CLang/LLD: `14.0.1 --> 14.0.3` +- JACK2: `1.9.20 --> 1.9.21` +- JSON-C: `0.15 --> 0.16` +- Mesa: `22.0.1 --> 22.0.2` +- Meson: `0.62.0 --> 0.62.1` +- ModemManager: `1.18.6 --> 1.18.8` +- Nano: `6.2 --> 6.3` +- NSS: `3.77 --> 3.78` +- Pango: `1.50.6 --> 1.50.7` +- Parted: `3.4 --> 3.5` +- pciutils: `3.7.0 --> 3.8.0` +- PCRE2: `10.39 --> 10.40` +- pkcs11-helper: `1.28.0 --> 1.29.0` +- Pygments: `2.11.2 --> 2.12.0` +- PyGObject: `3.42.0 --> 3.42.1` +- rsync: `3.2.3 --> 3.2.4` +- Ruby: `3.1.1 --> 3.1.2` +- SDL2: `2.0.20 --> 2.0.22` +- SQLite: `3.38.2 --> 3.38.3` +- Thunderbird: `91.7.0 --> 91.8.1` +- Unifont: `14.0.02 --> 14.0.03` +- Vala: `0.56.0 --> 0.56.1` +- Vim: `8.2.4700 --> 8.2.4826` +- xauth: `1.1.1 --> 1.1.2` +- xdg-desktop-portal: `1.14.2 --> 1.14.3` +- xfce4-panel: `4.16.3 --> 4.16.4` +- xfce4-terminal: `1.0.1 --> 1.0.2` +- xorgproto: `2021.5 --> 2022.1` + # MassOS 2022.04.2 Changes: diff --git a/patches/coreutils-9.0-chmodfix.patch b/patches/coreutils-9.0-chmodfix.patch deleted file mode 100644 index ad2b068..0000000 --- a/patches/coreutils-9.0-chmodfix.patch +++ /dev/null @@ -1,92 +0,0 @@ -From e8b56ebd536e82b15542a00c888109471936bfda Mon Sep 17 00:00:00 2001 -From: =?utf8?q?P=C3=A1draig=20Brady?= -Date: Fri, 24 Sep 2021 20:57:41 +0100 -Subject: [PATCH] chmod: fix exit status when ignoring symlinks - -* src/chmod.c: Reorder enum so CH_NOT_APPLIED -can be treated as a non error. -* tests/chmod/ignore-symlink.sh: A new test. -* tests/local.mk: Reference the new test. -Fixes https://bugs.gnu.org/50784 ---- - src/chmod.c | 4 ++-- - tests/chmod/ignore-symlink.sh | 31 +++++++++++++++++++++++++++++++ - tests/local.mk | 1 + - 4 files changed, 40 insertions(+), 2 deletions(-) - create mode 100755 tests/chmod/ignore-symlink.sh - -diff --git a/src/chmod.c b/src/chmod.c -index 37b04f5..57ac47f 100644 ---- a/src/chmod.c -+++ b/src/chmod.c -@@ -44,8 +44,8 @@ struct change_status - enum - { - CH_NO_STAT, -- CH_NOT_APPLIED, - CH_FAILED, -+ CH_NOT_APPLIED, - CH_NO_CHANGE_REQUESTED, - CH_SUCCEEDED - } -@@ -322,7 +322,7 @@ process_file (FTS *fts, FTSENT *ent) - if ( ! recurse) - fts_set (fts, ent, FTS_SKIP); - -- return CH_NO_CHANGE_REQUESTED <= ch.status; -+ return CH_NOT_APPLIED <= ch.status; - } - - /* Recursively change the modes of the specified FILES (the last entry -diff --git a/tests/chmod/ignore-symlink.sh b/tests/chmod/ignore-symlink.sh -new file mode 100755 -index 0000000..5ce3de8 ---- /dev/null -+++ b/tests/chmod/ignore-symlink.sh -@@ -0,0 +1,31 @@ -+#!/bin/sh -+# Test for proper exit code of chmod on a processed symlink. -+ -+# Copyright (C) 2021 Free Software Foundation, Inc. -+ -+# This program is free software: you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation, either version 3 of the License, or -+# (at your option) any later version. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+ -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+ -+. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src -+print_ver_ chmod -+ -+mkdir dir || framework_failure_ -+touch dir/f || framework_failure_ -+ln -s f dir/l || framework_failure_ -+ -+# This operation ignores symlinks but should succeed. -+chmod u+w -R dir 2> out || fail=1 -+ -+compare /dev/null out || fail=1 -+ -+Exit $fail -diff --git a/tests/local.mk b/tests/local.mk -index 228d0e3..b5b893f 100644 ---- a/tests/local.mk -+++ b/tests/local.mk -@@ -456,6 +456,7 @@ all_tests = \ - tests/chmod/c-option.sh \ - tests/chmod/equal-x.sh \ - tests/chmod/equals.sh \ -+ tests/chmod/ignore-symlink.sh \ - tests/chmod/inaccessible.sh \ - tests/chmod/octal.sh \ - tests/chmod/setgid.sh \ --- -1.9.1 - diff --git a/patches/coreutils-9.0-progressbar.patch b/patches/coreutils-9.1-progressbar.patch similarity index 90% rename from patches/coreutils-9.0-progressbar.patch rename to patches/coreutils-9.1-progressbar.patch index 15998e8..c0effc1 100644 --- a/patches/coreutils-9.0-progressbar.patch +++ b/patches/coreutils-9.1-progressbar.patch @@ -1,7 +1,7 @@ -diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c ---- coreutils-9.0/src/copy.c 2021-09-24 07:31:05.000000000 -0400 -+++ coreutils-9.0-patched/src/copy.c 2021-10-27 21:33:32.299248300 -0400 -@@ -129,6 +129,70 @@ +diff -aruN old/src/copy.c new/src/copy.c +--- old/src/copy.c 2022-04-15 14:53:28.000000000 +0100 ++++ new/src/copy.c 2022-04-19 09:44:32.133751522 +0100 +@@ -121,6 +121,70 @@ dev_t dev; }; @@ -72,10 +72,10 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c /* Initial size of the cp.dest_info hash table. */ #define DEST_INFO_INITIAL_CAPACITY 61 -@@ -299,10 +363,11 @@ +@@ -236,10 +300,11 @@ bytes read. */ static bool - sparse_copy (int src_fd, int dest_fd, char *buf, size_t buf_size, + sparse_copy (int src_fd, int dest_fd, char **abuf, size_t buf_size, - size_t hole_size, bool punch_holes, bool allow_reflink, + size_t hole_size, bool punch_holes, bool allow_reflink, bool move_mode, char const *src_name, char const *dst_name, @@ -86,7 +86,7 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c { *last_write_made_hole = false; *total_n_read = 0; -@@ -362,6 +427,85 @@ +@@ -298,6 +363,85 @@ while (max_n_read) { @@ -169,10 +169,10 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c + /* END progress mod */ + } + - ssize_t n_read = read (src_fd, buf, MIN (max_n_read, buf_size)); - if (n_read < 0) - { -@@ -446,6 +590,14 @@ + if (!*abuf) + *abuf = xalignalloc (getpagesize (), buf_size); + char *buf = *abuf; +@@ -385,6 +529,14 @@ certain files in /proc or /sys with linux kernels. */ } @@ -187,9 +187,9 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c /* Ensure a trailing hole is created, so that subsequent calls of sparse_copy() start at the correct offset. */ if (make_hole && ! create_hole (dest_fd, dst_name, punch_holes, psize)) -@@ -516,9 +668,11 @@ +@@ -456,9 +608,11 @@ static bool - lseek_copy (int src_fd, int dest_fd, char *buf, size_t buf_size, + lseek_copy (int src_fd, int dest_fd, char **abuf, size_t buf_size, size_t hole_size, off_t ext_start, off_t src_total_size, - enum Sparse_type sparse_mode, + enum Sparse_type sparse_mode, bool move_mode, @@ -201,7 +201,7 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c { off_t last_ext_start = 0; off_t last_ext_len = 0; -@@ -590,10 +744,16 @@ +@@ -530,10 +684,16 @@ is conservative and may miss some holes. */ off_t n_read; bool read_hole; @@ -211,7 +211,7 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c + + struct progress_status s_progress={iCountDown, cProgressField, last_time, last_size, iBarLength, src_open_sb}; + - if ( ! sparse_copy (src_fd, dest_fd, buf, buf_size, + if ( ! sparse_copy (src_fd, dest_fd, abuf, buf_size, sparse_mode == SPARSE_NEVER ? 0 : hole_size, - true, allow_reflink, src_name, dst_name, - ext_len, &n_read, &read_hole)) @@ -220,9 +220,9 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c return false; dest_pos = ext_start + n_read; -@@ -1374,8 +1534,74 @@ - buf_alloc = xmalloc (buf_size + buf_alignment); - buf = ptr_align (buf_alloc, buf_alignment); +@@ -1344,8 +1504,74 @@ + buf_size = blcm; + } + /* BEGIN progress mod */ + /* create a field of 6 lines */ @@ -295,7 +295,7 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c if (! ( #ifdef SEEK_HOLE scantype == LSEEK_SCANTYPE -@@ -1383,15 +1609,17 @@ +@@ -1353,15 +1579,17 @@ scan_inference.ext_start, src_open_sb.st_size, make_holes ? x->sparse_mode : SPARSE_NEVER, x->reflink_mode != REFLINK_NEVER, @@ -305,18 +305,18 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c + iBarLength, src_open_sb) : #endif - sparse_copy (source_desc, dest_desc, buf, buf_size, + sparse_copy (source_desc, dest_desc, &buf, buf_size, make_holes ? hole_size : 0, x->sparse_mode == SPARSE_ALWAYS, x->reflink_mode != REFLINK_NEVER, - src_name, dst_name, UINTMAX_MAX, &n_read, - &wrote_hole_at_eof))) + x->move_mode, src_name, dst_name, UINTMAX_MAX, -+ &n_read, &wrote_hole_at_eof, &s_progress))) ++ &n_read, &wrote_hole_at_eof, &s_progress))) { return_val = false; goto close_src_and_dst_desc; -@@ -1402,6 +1630,14 @@ +@@ -1372,6 +1600,14 @@ return_val = false; goto close_src_and_dst_desc; } @@ -331,9 +331,9 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c } if (x->preserve_timestamps) -diff -aur coreutils-9.0/src/copy.h coreutils-9.0-patched/src/copy.h ---- coreutils-9.0/src/copy.h 2021-09-24 07:31:05.000000000 -0400 -+++ coreutils-9.0-patched/src/copy.h 2021-10-27 21:33:32.299248300 -0400 +diff -aruN old/src/copy.h new/src/copy.h +--- old/src/copy.h 2022-04-08 12:22:17.000000000 +0100 ++++ new/src/copy.h 2022-04-19 09:44:32.137084801 +0100 @@ -236,6 +236,9 @@ Create destination directories as usual. */ bool symbolic_link; @@ -344,8 +344,8 @@ diff -aur coreutils-9.0/src/copy.h coreutils-9.0-patched/src/copy.h /* If true, do not copy a nondirectory that has an existing destination with the same or newer modification time. */ bool update; -@@ -308,4 +311,15 @@ - bool chown_failure_ok (struct cp_options const *) _GL_ATTRIBUTE_PURE; +@@ -313,4 +316,15 @@ + _GL_ATTRIBUTE_NONNULL () _GL_ATTRIBUTE_PURE; mode_t cached_umask (void); +/* BEGIN OF PROGRESS MOD */ @@ -360,10 +360,10 @@ diff -aur coreutils-9.0/src/copy.h coreutils-9.0-patched/src/copy.h +/* END OF PROGRESS MOD */ + #endif -diff -aur coreutils-9.0/src/cp.c coreutils-9.0-patched/src/cp.c ---- coreutils-9.0/src/cp.c 2021-09-24 07:31:05.000000000 -0400 -+++ coreutils-9.0-patched/src/cp.c 2021-10-27 21:22:08.913768100 -0400 -@@ -131,6 +131,7 @@ +diff -aruN old/src/cp.c new/src/cp.c +--- old/src/cp.c 2022-04-13 20:09:25.000000000 +0100 ++++ new/src/cp.c 2022-04-19 09:44:32.137084801 +0100 +@@ -128,6 +128,7 @@ {"symbolic-link", no_argument, NULL, 's'}, {"target-directory", required_argument, NULL, 't'}, {"update", no_argument, NULL, 'u'}, @@ -371,7 +371,7 @@ diff -aur coreutils-9.0/src/cp.c coreutils-9.0-patched/src/cp.c {"verbose", no_argument, NULL, 'v'}, {GETOPT_SELINUX_CONTEXT_OPTION_DECL}, {GETOPT_HELP_OPTION_DECL}, -@@ -170,6 +171,9 @@ +@@ -167,6 +168,9 @@ -f, --force if an existing destination file cannot be\n\ opened, remove it and try again (this option\n\ is ignored when the -n option is also used)\n\ @@ -381,9 +381,9 @@ diff -aur coreutils-9.0/src/cp.c coreutils-9.0-patched/src/cp.c -i, --interactive prompt before overwrite (overrides a previous -n\ \n\ option)\n\ -@@ -634,6 +638,70 @@ - die (EXIT_FAILURE, 0, _("target %s is not a directory"), - quoteaf (file[n_files - 1])); +@@ -639,6 +643,70 @@ + die (EXIT_FAILURE, err, _("target %s"), quoteaf (lastfile)); + } } + struct timeval start_time; + if (progress) { @@ -452,8 +452,8 @@ diff -aur coreutils-9.0/src/cp.c coreutils-9.0-patched/src/cp.c if (target_directory) { -@@ -781,6 +849,46 @@ - ok = copy (source, new_dest, 0, x, &unused, NULL); +@@ -779,6 +847,46 @@ + ok = copy (source, dest, AT_FDCWD, dest, -new_dst, x, &unused, NULL); } + if (progress) { @@ -499,7 +499,7 @@ diff -aur coreutils-9.0/src/cp.c coreutils-9.0-patched/src/cp.c return ok; } -@@ -816,6 +924,7 @@ +@@ -814,6 +922,7 @@ x->recursive = false; x->sparse_mode = SPARSE_AUTO; x->symbolic_link = false; @@ -507,7 +507,7 @@ diff -aur coreutils-9.0/src/cp.c coreutils-9.0-patched/src/cp.c x->set_mode = false; x->mode = 0; -@@ -954,7 +1063,7 @@ +@@ -952,7 +1061,7 @@ selinux_enabled = (0 < is_selinux_enabled ()); cp_option_init (&x); @@ -516,7 +516,7 @@ diff -aur coreutils-9.0/src/cp.c coreutils-9.0-patched/src/cp.c long_opts, NULL)) != -1) { -@@ -1011,6 +1120,10 @@ +@@ -1009,6 +1118,10 @@ x.unlink_dest_after_failed_open = true; break; @@ -527,7 +527,7 @@ diff -aur coreutils-9.0/src/cp.c coreutils-9.0-patched/src/cp.c case 'H': x.dereference = DEREF_COMMAND_LINE_ARGUMENTS; break; -@@ -1171,6 +1284,9 @@ +@@ -1159,6 +1272,9 @@ usage (EXIT_FAILURE); } @@ -537,10 +537,10 @@ diff -aur coreutils-9.0/src/cp.c coreutils-9.0-patched/src/cp.c x.backup_type = (make_backups ? xget_version (_("backup type"), version_control_string) -diff -aur coreutils-9.0/src/mv.c coreutils-9.0-patched/src/mv.c ---- coreutils-9.0/src/mv.c 2021-09-24 07:31:05.000000000 -0400 -+++ coreutils-9.0-patched/src/mv.c 2021-10-27 21:33:32.299248300 -0400 -@@ -66,6 +66,7 @@ +diff -aruN old/src/mv.c new/src/mv.c +--- old/src/mv.c 2022-04-13 20:09:25.000000000 +0100 ++++ new/src/mv.c 2022-04-19 09:44:32.137084801 +0100 +@@ -64,6 +64,7 @@ {"target-directory", required_argument, NULL, 't'}, {"update", no_argument, NULL, 'u'}, {"verbose", no_argument, NULL, 'v'}, @@ -548,9 +548,9 @@ diff -aur coreutils-9.0/src/mv.c coreutils-9.0-patched/src/mv.c {GETOPT_HELP_OPTION_DECL}, {GETOPT_VERSION_OPTION_DECL}, {NULL, 0, NULL, 0} -@@ -168,10 +169,86 @@ - static bool - do_move (char const *source, char const *dest, const struct cp_options *x) +@@ -153,11 +154,87 @@ + do_move (char const *source, char const *dest, + int dest_dirfd, char const *dest_relname, const struct cp_options *x) { + struct timeval start_time; + @@ -598,7 +598,8 @@ diff -aur coreutils-9.0/src/mv.c coreutils-9.0-patched/src/mv.c + + } + - bool ok = copy (source, dest, false, x, ©_into_self, &rename_succeeded); + bool ok = copy (source, dest, dest_dirfd, dest_relname, 0, x, + ©_into_self, &rename_succeeded); + if (progress && (x->rename_errno != 0 && ok)) { + /* BEGIN progress mod */ @@ -635,7 +636,7 @@ diff -aur coreutils-9.0/src/mv.c coreutils-9.0-patched/src/mv.c if (ok) { char const *dir_to_remove; -@@ -306,6 +383,7 @@ +@@ -255,6 +332,7 @@ \n\ -b like --backup but does not accept an argument\n\ -f, --force do not prompt before overwriting\n\ @@ -643,7 +644,7 @@ diff -aur coreutils-9.0/src/mv.c coreutils-9.0-patched/src/mv.c -i, --interactive prompt before overwrite\n\ -n, --no-clobber do not overwrite an existing file\n\ If you specify more than one of -i, -f, -n, only the final one takes effect.\n\ -@@ -361,7 +439,7 @@ +@@ -311,7 +389,7 @@ /* Try to disable the ability to unlink a directory. */ priv_set_remove_linkdir (); @@ -652,7 +653,7 @@ diff -aur coreutils-9.0/src/mv.c coreutils-9.0-patched/src/mv.c != -1) { switch (c) -@@ -407,6 +485,9 @@ +@@ -347,6 +425,9 @@ case 'v': x.verbose = true; break; diff --git a/patches/curl-7.82.0-UpstreamFixes.patch b/patches/curl-7.82.0-UpstreamFixes.patch deleted file mode 100644 index 211bbdf..0000000 --- a/patches/curl-7.82.0-UpstreamFixes.patch +++ /dev/null @@ -1,122 +0,0 @@ -From b5a9680577925a65477a666174a8e021ab418693 Mon Sep 17 00:00:00 2001 -From: Daniel Stenberg -Date: Fri, 1 Apr 2022 13:22:58 +0200 -Subject: [PATCH] http2: handle DONE called for the paused stream - -As it could otherwise stall all streams on the connection - -Reported-by: Evangelos Foutras -Fixes #8626 -Closes #8664 ---- - lib/http2.c | 9 ++++----- - 1 file changed, 4 insertions(+), 5 deletions(-) - -diff --git a/lib/http2.c b/lib/http2.c -index 82a9939301b5..34daaf17c594 100644 ---- a/lib/http2.c -+++ b/lib/http2.c -@@ -1240,11 +1240,10 @@ void Curl_http2_done(struct Curl_easy *data, bool premature) - if(!nghttp2_submit_rst_stream(httpc->h2, NGHTTP2_FLAG_NONE, - http->stream_id, NGHTTP2_STREAM_CLOSED)) - (void)nghttp2_session_send(httpc->h2); -- -- if(http->stream_id == httpc->pause_stream_id) { -- H2BUGF(infof(data, "stopped the pause stream!")); -- httpc->pause_stream_id = 0; -- } -+ } -+ if(http->stream_id == httpc->pause_stream_id) { -+ H2BUGF(infof(data, "DONE the pause stream!")); -+ httpc->pause_stream_id = 0; - } - - if(data->state.drain) - -From 3fa634a33742c1c585a7d43e354cc227423ffb29 Mon Sep 17 00:00:00 2001 -From: Daniel Stenberg -Date: Fri, 1 Apr 2022 13:22:58 +0200 -Subject: [PATCH] http: close the stream (not connection) on time condition - abort - -Closes #8664 ---- - lib/http.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/http.c b/lib/http.c -index 6445f98f8d0d..63cc748e8b97 100644 ---- a/lib/http.c -+++ b/lib/http.c -@@ -2955,7 +2955,7 @@ CURLcode Curl_http_firstwrite(struct Curl_easy *data, - infof(data, "Simulate a HTTP 304 response!"); - /* we abort the transfer before it is completed == we ruin the - re-use ability. Close the connection */ -- connclose(conn, "Simulated 304 handling"); -+ streamclose(conn, "Simulated 304 handling"); - return CURLE_OK; - } - } /* we have a time condition */ - -From fda4b81635672568efc716889d79e446bccc90ed Mon Sep 17 00:00:00 2001 -From: Daniel Stenberg -Date: Fri, 1 Apr 2022 13:23:04 +0200 -Subject: [PATCH] http2: RST the stream if we stop it on our own will - -For the "simulated 304" case the done-call isn't considered "premature" -but since the server didn't close the stream it needs to be reset to -stop delivering data. - -Closes #8664 ---- - lib/http2.c | 24 +++++++++++++++--------- - 1 file changed, 15 insertions(+), 9 deletions(-) - -diff --git a/lib/http2.c b/lib/http2.c -index 34daaf17c594..34031f17c160 100644 ---- a/lib/http2.c -+++ b/lib/http2.c -@@ -825,10 +825,14 @@ static int on_data_chunk_recv(nghttp2_session *session, uint8_t flags, - - /* get the stream from the hash based on Stream ID */ - data_s = nghttp2_session_get_stream_user_data(session, stream_id); -- if(!data_s) -- /* Receiving a Stream ID not in the hash should not happen, this is an -- internal error more than anything else! */ -- return NGHTTP2_ERR_CALLBACK_FAILURE; -+ if(!data_s) { -+ /* Receiving a Stream ID not in the hash should not happen - unless -+ we have aborted a transfer artificially and there were more data -+ in the pipeline. Silently ignore. */ -+ H2BUGF(fprintf(stderr, "Data for stream %u but it doesn't exist\n", -+ stream_id)); -+ return 0; -+ } - - stream = data_s->req.p.http; - if(!stream) -@@ -1234,17 +1238,19 @@ void Curl_http2_done(struct Curl_easy *data, bool premature) - !httpc->h2) /* not HTTP/2 ? */ - return; - -- if(premature) { -+ /* do this before the reset handling, as that might clear ->stream_id */ -+ if(http->stream_id == httpc->pause_stream_id) { -+ H2BUGF(infof(data, "DONE the pause stream (%x)", http->stream_id)); -+ httpc->pause_stream_id = 0; -+ } -+ if(premature || (!http->closed && http->stream_id)) { - /* RST_STREAM */ - set_transfer(httpc, data); /* set the transfer */ -+ H2BUGF(infof(data, "RST stream %x", http->stream_id)); - if(!nghttp2_submit_rst_stream(httpc->h2, NGHTTP2_FLAG_NONE, - http->stream_id, NGHTTP2_STREAM_CLOSED)) - (void)nghttp2_session_send(httpc->h2); - } -- if(http->stream_id == httpc->pause_stream_id) { -- H2BUGF(infof(data, "DONE the pause stream!")); -- httpc->pause_stream_id = 0; -- } - - if(data->state.drain) - drained_transfer(data, httpc); diff --git a/patches/freetype-2.12.0-FixSegfault.patch b/patches/freetype-2.12.0-FixSegfault.patch new file mode 100644 index 0000000..da3c5f9 --- /dev/null +++ b/patches/freetype-2.12.0-FixSegfault.patch @@ -0,0 +1,28 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Georg Brandl +Date: Tue, 12 Apr 2022 11:43:37 +0000 +Subject: [PATCH] * src/cff/cffgload.c (cff_slot_load) [FT_CONFIG_OPTION_SVG]: + Fix segfault. + +This can happen if the function is called with `size` being `NULL`. + +Fixes #1147. +--- + src/cff/cffgload.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/cff/cffgload.c b/src/cff/cffgload.c +index ff0d9cf13611..10855fa41ec1 100644 +--- a/src/cff/cffgload.c ++++ b/src/cff/cffgload.c +@@ -370,8 +370,8 @@ + SFNT_Service sfnt; + + +- if ( size->root.metrics.x_ppem < 1 || +- size->root.metrics.y_ppem < 1 ) ++ if ( size && (size->root.metrics.x_ppem < 1 || ++ size->root.metrics.y_ppem < 1 ) ) + { + error = FT_THROW( Invalid_Size_Handle ); + return error; diff --git a/patches/gptfdisk-1.0.8-convenience-1.patch b/patches/gptfdisk-1.0.8-convenience-1.patch deleted file mode 100644 index 3d78b87..0000000 --- a/patches/gptfdisk-1.0.8-convenience-1.patch +++ /dev/null @@ -1,27 +0,0 @@ -Submitted By: Bruce Dubbs -Date: 2015-10-19 -Initial Package Version: 1.0.1 -Upstream Status: None. BLFS specific. -Origin: BLFS -Description: Updates Makefile enabling parameter passing. - Rediffed for version 1.0.1 -Updates: Rediffed for version 1.0.3 (P. Labastie) - Patch version 2 for version 1.0.3: Removed ICU - and POPT switches, keeping only the - install target (P. Labastie) - -diff -Naur gptfdisk-1.0.3.old/Makefile gptfdisk-1.0.3.new/Makefile ---- gptfdisk-1.0.3.old/Makefile 2017-07-28 03:41:20.000000000 +0200 -+++ gptfdisk-1.0.3.new/Makefile 2018-04-20 10:04:18.896802047 +0200 -@@ -37,6 +37,11 @@ - clean: #no pre-reqs - rm -f core *.o *~ gdisk sgdisk cgdisk fixparts - -+install: gdisk cgdisk sgdisk fixparts -+ install -dm 755 $(DESTDIR)/sbin $(DESTDIR)/usr/share/man/man8 -+ install -m755 gdisk cgdisk sgdisk fixparts $(DESTDIR)/sbin -+ install -m644 *.8 $(DESTDIR)/usr/share/man/man8 -+ - # what are the source dependencies - depend: $(SRCS) - $(DEPEND) $(SRCS) diff --git a/patches/gtk3-3.24.33-missingicons.patch b/patches/gtk3-3.24.33-missingicons.patch new file mode 100644 index 0000000..1a217c8 --- /dev/null +++ b/patches/gtk3-3.24.33-missingicons.patch @@ -0,0 +1,2774 @@ +From 5a0ffbbb4568e39bdf26006e1bf18c1c1d0d597a Mon Sep 17 00:00:00 2001 +From: Jakub Steiner +Date: Thu, 10 Mar 2022 22:04:39 +0100 +Subject: [PATCH] icons: add legacy icons + +- add legacy hicolor icons relied on in testsuite + +Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/4754 +--- + gtk/icons/16x16/actions/application-exit.png | Bin 0 -> 673 bytes + gtk/icons/16x16/actions/dialog-error.png | Bin 0 -> 652 bytes + .../16x16/actions/dialog-information.png | Bin 0 -> 616 bytes + gtk/icons/16x16/actions/dialog-password.png | Bin 0 -> 551 bytes + gtk/icons/16x16/actions/dialog-question.png | Bin 0 -> 500 bytes + gtk/icons/16x16/actions/dialog-warning.png | Bin 0 -> 570 bytes + gtk/icons/16x16/actions/document-new.png | Bin 0 -> 330 bytes + gtk/icons/16x16/actions/document-open.png | Bin 0 -> 420 bytes + .../16x16/actions/document-print-preview.png | Bin 0 -> 674 bytes + gtk/icons/16x16/actions/document-print.png | Bin 0 -> 532 bytes + .../16x16/actions/document-properties.png | Bin 0 -> 487 bytes + gtk/icons/16x16/actions/document-revert.png | Bin 0 -> 460 bytes + gtk/icons/16x16/actions/document-save-as.png | Bin 0 -> 509 bytes + gtk/icons/16x16/actions/document-save.png | Bin 0 -> 459 bytes + gtk/icons/16x16/actions/drive-harddisk.png | Bin 0 -> 838 bytes + gtk/icons/16x16/actions/edit-clear-all.png | Bin 0 -> 605 bytes + gtk/icons/16x16/actions/edit-clear.png | Bin 0 -> 249 bytes + gtk/icons/16x16/actions/edit-copy.png | Bin 0 -> 401 bytes + gtk/icons/16x16/actions/edit-cut.png | Bin 0 -> 781 bytes + gtk/icons/16x16/actions/edit-delete.png | Bin 0 -> 806 bytes + gtk/icons/16x16/actions/edit-find-replace.png | Bin 0 -> 920 bytes + gtk/icons/16x16/actions/edit-find.png | Bin 0 -> 825 bytes + gtk/icons/16x16/actions/edit-paste.png | Bin 0 -> 582 bytes + gtk/icons/16x16/actions/edit-redo.png | Bin 0 -> 465 bytes + gtk/icons/16x16/actions/edit-select-all.png | Bin 0 -> 320 bytes + gtk/icons/16x16/actions/edit-undo.png | Bin 0 -> 442 bytes + gtk/icons/16x16/actions/folder.png | Bin 0 -> 492 bytes + .../16x16/actions/format-indent-less.png | Bin 0 -> 432 bytes + .../16x16/actions/format-indent-more.png | Bin 0 -> 438 bytes + .../16x16/actions/format-justify-center.png | Bin 0 -> 276 bytes + .../16x16/actions/format-justify-fill.png | Bin 0 -> 266 bytes + .../16x16/actions/format-justify-left.png | Bin 0 -> 283 bytes + .../16x16/actions/format-justify-right.png | Bin 0 -> 267 bytes + gtk/icons/16x16/actions/format-text-bold.png | Bin 0 -> 670 bytes + .../16x16/actions/format-text-italic.png | Bin 0 -> 697 bytes + .../actions/format-text-strikethrough.png | Bin 0 -> 480 bytes + .../16x16/actions/format-text-underline.png | Bin 0 -> 593 bytes + gtk/icons/16x16/actions/go-bottom.png | Bin 0 -> 409 bytes + gtk/icons/16x16/actions/go-down.png | Bin 0 -> 403 bytes + gtk/icons/16x16/actions/go-first-rtl.png | Bin 0 -> 489 bytes + gtk/icons/16x16/actions/go-first.png | Bin 0 -> 491 bytes + gtk/icons/16x16/actions/go-home.png | Bin 0 -> 582 bytes + gtk/icons/16x16/actions/go-jump.png | Bin 0 -> 343 bytes + gtk/icons/16x16/actions/go-last-rtl.png | Bin 0 -> 491 bytes + gtk/icons/16x16/actions/go-last.png | Bin 0 -> 489 bytes + gtk/icons/16x16/actions/go-next-rtl.png | Bin 0 -> 403 bytes + gtk/icons/16x16/actions/go-next.png | Bin 0 -> 388 bytes + gtk/icons/16x16/actions/go-previous-rtl.png | Bin 0 -> 388 bytes + gtk/icons/16x16/actions/go-previous.png | Bin 0 -> 403 bytes + gtk/icons/16x16/actions/go-top.png | Bin 0 -> 431 bytes + gtk/icons/16x16/actions/go-up.png | Bin 0 -> 336 bytes + gtk/icons/16x16/actions/help-about.png | Bin 0 -> 530 bytes + gtk/icons/16x16/actions/help-contents.png | Bin 0 -> 534 bytes + gtk/icons/16x16/actions/image-missing.png | Bin 0 -> 405 bytes + gtk/icons/16x16/actions/list-add.png | Bin 0 -> 380 bytes + gtk/icons/16x16/actions/list-remove.png | Bin 0 -> 222 bytes + gtk/icons/16x16/actions/media-eject.png | Bin 0 -> 333 bytes + gtk/icons/16x16/actions/media-flash.png | Bin 0 -> 378 bytes + gtk/icons/16x16/actions/media-floppy.png | Bin 0 -> 560 bytes + gtk/icons/16x16/actions/media-optical.png | Bin 0 -> 1020 bytes + .../16x16/actions/media-playback-pause.png | Bin 0 -> 268 bytes + .../16x16/actions/media-playback-start.png | Bin 0 -> 369 bytes + .../16x16/actions/media-playback-stop.png | Bin 0 -> 252 bytes + .../16x16/actions/media-playlist-repeat.png | Bin 0 -> 393 bytes + .../16x16/actions/media-playlist-shuffle.png | Bin 0 -> 441 bytes + gtk/icons/16x16/actions/media-record.png | Bin 0 -> 419 bytes + gtk/icons/16x16/actions/media-removable.png | Bin 0 -> 834 bytes + .../16x16/actions/media-seek-backward.png | Bin 0 -> 332 bytes + .../16x16/actions/media-seek-forward.png | Bin 0 -> 369 bytes + .../16x16/actions/media-skip-backward.png | Bin 0 -> 401 bytes + .../16x16/actions/media-skip-forward.png | Bin 0 -> 459 bytes + gtk/icons/16x16/actions/media-tape.png | Bin 0 -> 506 bytes + gtk/icons/16x16/actions/multimedia-player.png | Bin 0 -> 586 bytes + .../actions/multimedia-volume-control.png | Bin 0 -> 348 bytes + gtk/icons/16x16/actions/network-idle.png | Bin 0 -> 535 bytes + gtk/icons/16x16/actions/printer-error.png | Bin 0 -> 622 bytes + gtk/icons/16x16/actions/process-stop.png | Bin 0 -> 422 bytes + gtk/icons/16x16/actions/system-run.png | Bin 0 -> 305 bytes + gtk/icons/16x16/actions/text-x-generic.png | Bin 0 -> 535 bytes + .../16x16/actions/tools-check-spelling.png | Bin 0 -> 507 bytes + gtk/icons/16x16/actions/view-fullscreen.png | Bin 0 -> 415 bytes + gtk/icons/16x16/actions/view-refresh.png | Bin 0 -> 698 bytes + gtk/icons/16x16/actions/view-restore.png | Bin 0 -> 338 bytes + .../16x16/actions/view-sort-ascending.png | Bin 0 -> 359 bytes + .../16x16/actions/view-sort-descending.png | Bin 0 -> 367 bytes + gtk/icons/16x16/actions/window-close.png | Bin 0 -> 337 bytes + gtk/icons/16x16/actions/zoom-fit-best.png | Bin 0 -> 481 bytes + gtk/icons/16x16/actions/zoom-in.png | Bin 0 -> 492 bytes + gtk/icons/16x16/actions/zoom-original.png | Bin 0 -> 507 bytes + gtk/icons/16x16/actions/zoom-out.png | Bin 0 -> 450 bytes + .../audio-volume-high-symbolic.symbolic.png | Bin 0 -> 297 bytes + gtk/icons/16x16/status/audio-volume-high.png | Bin 0 -> 725 bytes + .../audio-volume-low-symbolic.symbolic.png | Bin 0 -> 317 bytes + gtk/icons/16x16/status/audio-volume-low.png | Bin 0 -> 433 bytes + .../audio-volume-medium-symbolic.symbolic.png | Bin 0 -> 315 bytes + .../16x16/status/audio-volume-medium.png | Bin 0 -> 552 bytes + .../audio-volume-muted-symbolic.symbolic.png | Bin 0 -> 305 bytes + gtk/icons/16x16/status/audio-volume-muted.png | Bin 0 -> 545 bytes + .../changes-allow-symbolic.symbolic.png | Bin 0 -> 177 bytes + .../changes-prevent-symbolic.symbolic.png | Bin 0 -> 168 bytes + .../dialog-password-symbolic.symbolic.png | Bin 0 -> 237 bytes + .../dialog-warning-symbolic.symbolic.png | Bin 0 -> 286 bytes + .../document-open-symbolic.symbolic.png | Bin 0 -> 194 bytes + .../status/edit-clear-symbolic.symbolic.png | Bin 0 -> 238 bytes + .../status/edit-find-symbolic.symbolic.png | Bin 0 -> 316 bytes + .../status/list-add-symbolic.symbolic.png | Bin 0 -> 116 bytes + .../status/list-remove-symbolic.symbolic.png | Bin 0 -> 100 bytes + .../status/open-menu-symbolic.symbolic.png | Bin 0 -> 106 bytes + .../status/pan-down-symbolic.symbolic.png | Bin 0 -> 135 bytes + .../status/pan-end-symbolic.symbolic.png | Bin 0 -> 147 bytes + .../status/pan-start-symbolic.symbolic.png | Bin 0 -> 140 bytes + .../16x16/status/pan-up-symbolic.symbolic.png | Bin 0 -> 122 bytes + .../user-trash-full-symbolic.symbolic.png | Bin 0 -> 357 bytes + .../status/user-trash-symbolic.symbolic.png | Bin 0 -> 164 bytes + .../status/window-close-symbolic.symbolic.png | Bin 0 -> 195 bytes + .../window-maximize-symbolic.symbolic.png | Bin 0 -> 149 bytes + .../window-minimize-symbolic.symbolic.png | Bin 0 -> 104 bytes + .../window-restore-symbolic.symbolic.png | Bin 0 -> 140 bytes + .../status/audio-volume-high-symbolic.svg | 1 + + .../status/audio-volume-low-symbolic.svg | 1 + + .../status/audio-volume-medium-symbolic.svg | 1 + + .../status/audio-volume-muted-symbolic.svg | 1 + + .../status/changes-allow-symbolic.svg | 1 + + .../status/changes-prevent-symbolic.svg | 1 + + .../status/dialog-password-symbolic.svg | 7 +++ + .../status/dialog-warning-symbolic.svg | 1 + + .../status/document-open-symbolic.svg | 1 + + .../scalable/status/edit-clear-symbolic.svg | 4 ++ + .../scalable/status/edit-find-symbolic.svg | 7 +++ + .../scalable/status/list-add-symbolic.svg | 4 ++ + .../scalable/status/list-remove-symbolic.svg | 4 ++ + .../scalable/status/open-menu-symbolic.svg | 8 ++++ + .../scalable/status/pan-down-symbolic.svg | 41 ++++++++++++++++++ + .../scalable/status/pan-end-symbolic.svg | 41 ++++++++++++++++++ + .../scalable/status/pan-start-symbolic.svg | 41 ++++++++++++++++++ + gtk/icons/scalable/status/pan-up-symbolic.svg | 41 ++++++++++++++++++ + .../status/user-trash-full-symbolic.svg | 1 + + .../scalable/status/user-trash-symbolic.svg | 1 + + .../scalable/status/window-close-symbolic.svg | 1 + + .../status/window-maximize-symbolic.svg | 1 + + .../status/window-minimize-symbolic.svg | 1 + + .../status/window-restore-symbolic.svg | 1 + + 142 files changed, 212 insertions(+) + create mode 100644 gtk/icons/16x16/actions/application-exit.png + create mode 100644 gtk/icons/16x16/actions/dialog-error.png + create mode 100644 gtk/icons/16x16/actions/dialog-information.png + create mode 100644 gtk/icons/16x16/actions/dialog-password.png + create mode 100644 gtk/icons/16x16/actions/dialog-question.png + create mode 100644 gtk/icons/16x16/actions/dialog-warning.png + create mode 100644 gtk/icons/16x16/actions/document-new.png + create mode 100644 gtk/icons/16x16/actions/document-open.png + create mode 100644 gtk/icons/16x16/actions/document-print-preview.png + create mode 100644 gtk/icons/16x16/actions/document-print.png + create mode 100644 gtk/icons/16x16/actions/document-properties.png + create mode 100644 gtk/icons/16x16/actions/document-revert.png + create mode 100644 gtk/icons/16x16/actions/document-save-as.png + create mode 100644 gtk/icons/16x16/actions/document-save.png + create mode 100644 gtk/icons/16x16/actions/drive-harddisk.png + create mode 100644 gtk/icons/16x16/actions/edit-clear-all.png + create mode 100644 gtk/icons/16x16/actions/edit-clear.png + create mode 100644 gtk/icons/16x16/actions/edit-copy.png + create mode 100644 gtk/icons/16x16/actions/edit-cut.png + create mode 100644 gtk/icons/16x16/actions/edit-delete.png + create mode 100644 gtk/icons/16x16/actions/edit-find-replace.png + create mode 100644 gtk/icons/16x16/actions/edit-find.png + create mode 100644 gtk/icons/16x16/actions/edit-paste.png + create mode 100644 gtk/icons/16x16/actions/edit-redo.png + create mode 100644 gtk/icons/16x16/actions/edit-select-all.png + create mode 100644 gtk/icons/16x16/actions/edit-undo.png + create mode 100644 gtk/icons/16x16/actions/folder.png + create mode 100644 gtk/icons/16x16/actions/format-indent-less.png + create mode 100644 gtk/icons/16x16/actions/format-indent-more.png + create mode 100644 gtk/icons/16x16/actions/format-justify-center.png + create mode 100644 gtk/icons/16x16/actions/format-justify-fill.png + create mode 100644 gtk/icons/16x16/actions/format-justify-left.png + create mode 100644 gtk/icons/16x16/actions/format-justify-right.png + create mode 100644 gtk/icons/16x16/actions/format-text-bold.png + create mode 100644 gtk/icons/16x16/actions/format-text-italic.png + create mode 100644 gtk/icons/16x16/actions/format-text-strikethrough.png + create mode 100644 gtk/icons/16x16/actions/format-text-underline.png + create mode 100644 gtk/icons/16x16/actions/go-bottom.png + create mode 100644 gtk/icons/16x16/actions/go-down.png + create mode 100644 gtk/icons/16x16/actions/go-first-rtl.png + create mode 100644 gtk/icons/16x16/actions/go-first.png + create mode 100644 gtk/icons/16x16/actions/go-home.png + create mode 100644 gtk/icons/16x16/actions/go-jump.png + create mode 100644 gtk/icons/16x16/actions/go-last-rtl.png + create mode 100644 gtk/icons/16x16/actions/go-last.png + create mode 100644 gtk/icons/16x16/actions/go-next-rtl.png + create mode 100644 gtk/icons/16x16/actions/go-next.png + create mode 100644 gtk/icons/16x16/actions/go-previous-rtl.png + create mode 100644 gtk/icons/16x16/actions/go-previous.png + create mode 100644 gtk/icons/16x16/actions/go-top.png + create mode 100644 gtk/icons/16x16/actions/go-up.png + create mode 100644 gtk/icons/16x16/actions/help-about.png + create mode 100644 gtk/icons/16x16/actions/help-contents.png + create mode 100644 gtk/icons/16x16/actions/image-missing.png + create mode 100644 gtk/icons/16x16/actions/list-add.png + create mode 100644 gtk/icons/16x16/actions/list-remove.png + create mode 100644 gtk/icons/16x16/actions/media-eject.png + create mode 100644 gtk/icons/16x16/actions/media-flash.png + create mode 100644 gtk/icons/16x16/actions/media-floppy.png + create mode 100644 gtk/icons/16x16/actions/media-optical.png + create mode 100644 gtk/icons/16x16/actions/media-playback-pause.png + create mode 100644 gtk/icons/16x16/actions/media-playback-start.png + create mode 100644 gtk/icons/16x16/actions/media-playback-stop.png + create mode 100644 gtk/icons/16x16/actions/media-playlist-repeat.png + create mode 100644 gtk/icons/16x16/actions/media-playlist-shuffle.png + create mode 100644 gtk/icons/16x16/actions/media-record.png + create mode 100644 gtk/icons/16x16/actions/media-removable.png + create mode 100644 gtk/icons/16x16/actions/media-seek-backward.png + create mode 100644 gtk/icons/16x16/actions/media-seek-forward.png + create mode 100644 gtk/icons/16x16/actions/media-skip-backward.png + create mode 100644 gtk/icons/16x16/actions/media-skip-forward.png + create mode 100644 gtk/icons/16x16/actions/media-tape.png + create mode 100644 gtk/icons/16x16/actions/multimedia-player.png + create mode 100644 gtk/icons/16x16/actions/multimedia-volume-control.png + create mode 100644 gtk/icons/16x16/actions/network-idle.png + create mode 100644 gtk/icons/16x16/actions/printer-error.png + create mode 100644 gtk/icons/16x16/actions/process-stop.png + create mode 100644 gtk/icons/16x16/actions/system-run.png + create mode 100644 gtk/icons/16x16/actions/text-x-generic.png + create mode 100644 gtk/icons/16x16/actions/tools-check-spelling.png + create mode 100644 gtk/icons/16x16/actions/view-fullscreen.png + create mode 100644 gtk/icons/16x16/actions/view-refresh.png + create mode 100644 gtk/icons/16x16/actions/view-restore.png + create mode 100644 gtk/icons/16x16/actions/view-sort-ascending.png + create mode 100644 gtk/icons/16x16/actions/view-sort-descending.png + create mode 100644 gtk/icons/16x16/actions/window-close.png + create mode 100644 gtk/icons/16x16/actions/zoom-fit-best.png + create mode 100644 gtk/icons/16x16/actions/zoom-in.png + create mode 100644 gtk/icons/16x16/actions/zoom-original.png + create mode 100644 gtk/icons/16x16/actions/zoom-out.png + create mode 100644 gtk/icons/16x16/status/audio-volume-high-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/audio-volume-high.png + create mode 100644 gtk/icons/16x16/status/audio-volume-low-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/audio-volume-low.png + create mode 100644 gtk/icons/16x16/status/audio-volume-medium-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/audio-volume-medium.png + create mode 100644 gtk/icons/16x16/status/audio-volume-muted-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/audio-volume-muted.png + create mode 100644 gtk/icons/16x16/status/changes-allow-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/changes-prevent-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/dialog-password-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/dialog-warning-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/document-open-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/edit-clear-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/edit-find-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/list-add-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/list-remove-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/open-menu-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/pan-down-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/pan-end-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/pan-start-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/pan-up-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/user-trash-full-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/user-trash-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/window-close-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/window-maximize-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/window-minimize-symbolic.symbolic.png + create mode 100644 gtk/icons/16x16/status/window-restore-symbolic.symbolic.png + create mode 100644 gtk/icons/scalable/status/audio-volume-high-symbolic.svg + create mode 100644 gtk/icons/scalable/status/audio-volume-low-symbolic.svg + create mode 100644 gtk/icons/scalable/status/audio-volume-medium-symbolic.svg + create mode 100644 gtk/icons/scalable/status/audio-volume-muted-symbolic.svg + create mode 100644 gtk/icons/scalable/status/changes-allow-symbolic.svg + create mode 100644 gtk/icons/scalable/status/changes-prevent-symbolic.svg + create mode 100644 gtk/icons/scalable/status/dialog-password-symbolic.svg + create mode 100644 gtk/icons/scalable/status/dialog-warning-symbolic.svg + create mode 100644 gtk/icons/scalable/status/document-open-symbolic.svg + create mode 100644 gtk/icons/scalable/status/edit-clear-symbolic.svg + create mode 100644 gtk/icons/scalable/status/edit-find-symbolic.svg + create mode 100644 gtk/icons/scalable/status/list-add-symbolic.svg + create mode 100644 gtk/icons/scalable/status/list-remove-symbolic.svg + create mode 100644 gtk/icons/scalable/status/open-menu-symbolic.svg + create mode 100644 gtk/icons/scalable/status/pan-down-symbolic.svg + create mode 100644 gtk/icons/scalable/status/pan-end-symbolic.svg + create mode 100644 gtk/icons/scalable/status/pan-start-symbolic.svg + create mode 100644 gtk/icons/scalable/status/pan-up-symbolic.svg + create mode 100644 gtk/icons/scalable/status/user-trash-full-symbolic.svg + create mode 100644 gtk/icons/scalable/status/user-trash-symbolic.svg + create mode 100644 gtk/icons/scalable/status/window-close-symbolic.svg + create mode 100644 gtk/icons/scalable/status/window-maximize-symbolic.svg + create mode 100644 gtk/icons/scalable/status/window-minimize-symbolic.svg + create mode 100644 gtk/icons/scalable/status/window-restore-symbolic.svg + +diff --git a/gtk/icons/16x16/actions/application-exit.png b/gtk/icons/16x16/actions/application-exit.png +new file mode 100644 +index 0000000000000000000000000000000000000000..2b74d446b353c1459c2f8b2e4242892a3bb3d2d1 +GIT binary patch +literal 673 +zcmV;S0$%-zP)cwh>$-`fYnPzI&28$<8~*dA>vKjkjK% +znaky002D+Oi^b4&9n(ypX&Op_=X%(V9q5KJXWZ!VFKJ@@Qs;Ual^N=5uQV75>jIv=IP16yW +z$oG9j2{WO9m(JxG9Gu&i6ddSiYPqZa#^a9bgZ;R7$A|fVd}y +z0tv6#efzke)WI27UPAB8b`E#+Q*d48>IR~#Qc31bnDUrb>2i4JgM*yDemz&dc@g~^ +zy3o$ixaY0Qsnk$yj;%9mM@9hQ>XIM}=-u6gb94yfOq2efdZ<+VvJ5341VlpMlv5aZ +z^ilRMUCLFN6FBYJ^VvDKk=EuMq1>7hW-9ej2#`EP!f9Q=Wx-Vf3Wb|?_e|B`NwbM@_9<7BGPDpuZdykzO-{~Z7p#<#sd%C +zhjgdBKj;2?2sJn~Aj5=hTZDZO=(?_CkcM)DTzSpqWsrgExeN>rpr~lP0AyA?-^H@5 +z0P&!$y<^MFSu^hL?dwrxv1`{(h$_sH7>5HDq*Cb_N~z!&ec$R!Vk-iz|6l$S|L +zDSVIY%$W-Xuw62*2lHG#LrVFArM$$zndzC#V|<6v4>oNwbDuu#H*9;a8q*WvWI~{) +z3lIWaEQ5179(eP<<@WcVsFg~`Rw(6;en4bqrcAjm67hMMF)gB+O{j7OT&sfsP$B_z +zcLI?JTKDcdZoc>`RjsbxsFY^{Kx*Q|{S*$(!-Vk>e)}F65*h#$0JO4D=?sueAhd8n +zMBRThXN;6b034uCW5z5b%erCBnh~LV5z28uLVz#|-%Dl=X2hbv_^~KoyV=y?tQ9Wv +zc8Wzq)NBP}p~V3W1BRx*CZdtq_YO`I?PJG;1h7T0&NkV$@WsIcO#=M&=w9=Cs7e)P +zEJ{qY-c(Y~g=IlC9E^GO3NQ@(6;dKKYZi=-Bv{HhLV6ychT_xw9|Ui;j+tRf<`-VW +zS!P-$Qq!mZ)@3LK^*tkDc=fvf?xk>D_mW$$v$8BmDZ#&CaLydi-%}`rfoe@D=1W4l +z?wNYN(DDR<+uBA1qYT6&pCcTC)ZRAI={^OV6S^cH>&p}M_a7UgGYM{Q|Gfu3Lm{BI +z2esF49Y{X4QmOkvDc>csKy=fN#b!r!DU<)W;Q*}`6aWzpL&Ty`wvF1WH%+fveWP_N +z{eBo}rVB)7T!h_NEvyN8s#La0_So4_x?YI34&O}id1JsRmu3s=y1=>%yff7p~xQ{ +z8_8^KZ_3Imlv)t54fk0Da1tHR&{#XI*XyRcdb<1@nrhFKmltkqZ*SVx*VlDuV4&}H +zevwp#miSo)h}7WpRNtg>#It#3EIvY(WdZ=&kffXEVqP1ko|W}>B*&n>9xDLapi`F5 +z0hrL&53;^W0fv@x(ARW=u^n(;Gyb8N6-d2B0D7#}-Y%(8KO3Tzjoko%XC?q-EfNhF +zXFauTEkQ5P1r1gJ^sBtWoQm%5dRHOibeVbj>9DLy1hc{)dg`ur!_2E~XuA_9F|REG +zST=11E0Sf^wdF3a-#&YM`P!KSFm!bN_1mWooxON!e||o*niD9B%pq4<1Yi*)`VKEq +zDV)e$4h{)uMCU?KuwNzfb(p-5e)Bf&vkJ(`A(o+`BwnJO@UYozGGL1y__QE0E`pG` +z(k1{)Hj^1jP-%wJ@*>D0(;Lq2|fr^0!M09ZC|+`DAUu03@~09zbe>iYuxfb&1z;Y*qT0000|oJkNussdzX1+Lzaf +z?LoeG>30bLj3VGmBhg{cvz}LgikuPOHfvTo}lBP4sfZ&cYn>MdEEX%^@Eeu1@)3PnZQ&CWY +z1W~5no;-PEKYaYaqR)QdLzK8Wvw7<#%kw>`ssaismI}z`Qh4+3C0@OKjyJJQuBY6R%#sz{}UqNDgwK +zs;AGKa88^&>i9%32m**Qr!f8f{c|Lldnc{sPYrT?t2S-fV4ga2!pLOPK6Ul%#SqJ+L;so|1kZ@`5vAF4vA=O9FPD2002ovPDHLkV1fu13TglV + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/dialog-question.png b/gtk/icons/16x16/actions/dialog-question.png +new file mode 100644 +index 0000000000000000000000000000000000000000..6df7daf1f642bb3d09f4967435a4188f21951e80 +GIT binary patch +literal 500 +zcmV6lR`xHD(zJs7&JA4Y6#UK`5m<0d5*}>|)U}`>w{sIoO{++6TSr#=2AjqK +zm&DgCBD`V_DUD0GxRLQIXISumQWV4m0W4Kl3@#toMrg%6qHC8BU%!mRh7}GsjO}sw +zXWMCKup`)cB~pqg$^=DM&2jj9&Jc$^?gjdo0(E*t +q0UI*S*<%6i6lF>kojvGA-}nEYH};@d?qVtc0000%A_P)H~3lFNl%J-8yP@m!eC>{FH44*roht8YwP2d9#zQM(2?3m*^=@^Jfvx-U%a_?(j +ztQ?&jM%g;HwKuVSmMixw*nYi)YC8H{AQ%dX8$!i9>4-TbS^}uHG!k%e!?AE(yw}#; +zChk6hqHs?jmT+{VgwBp)8)Z_h4yiT=+pM6ob>V +zwt!zpX9qEx|HO4L1&2p~`{b7^$tc7BLm4;ZrU!8*Plpu*eZuPiG=IDctOe^+`{PTh +z+t;&d2PNgxZyNAo!ox9s6`kzCugoE$VCii6_$olK)dFC#)<@??aCWVyC4}C!!1MCW +zrED5Xl8t#B5wj&&y@NIK)df7_!z0$>as-G_SvvQMwU%RH5n7A5`lsA&X#fBK07*qo +IM6N<$f-15Fp8x;= + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/document-new.png b/gtk/icons/16x16/actions/document-new.png +new file mode 100644 +index 0000000000000000000000000000000000000000..0dcbfec95d17f5192b77d6da7a07856c26916ff6 +GIT binary patch +literal 330 +zcmV-Q0k!^#P)0Ep_>P9jhZBL4|9kP|H>$%aRks{{~=`2Y|_fmxi1Q#7z;LX9)~sD6AeS~s!V +z{sH)cZU7`nq83;33?G7m^WN8x9st~42LQ4xQ%m25kpe)80N`+208kW#T3Y6h5gCB) +z0I<8v-2b3|)5O1n-vD3sk`9dRxA6c18Qj*s!t_2|`QtDjAcOaQ9Q;3k+iNr6fBi27 +c@BMoA1tgx^5)%wHasU7T07*qoM6N<$f(`(UW&i*H + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/document-open.png b/gtk/icons/16x16/actions/document-open.png +new file mode 100644 +index 0000000000000000000000000000000000000000..47547143ad51535ade7d99c74bcb00955fbad09d +GIT binary patch +literal 420 +zcmV;V0bBlwP)%!Anhj2uI +z-B1o;KYLAhe7(Ra>O5ht!1J4qJv?Qv0Ob<(sB6Mws|60>_-@PwH-ox8+>V&wR>;6- +z9U>lYwBUvV${{|vRDj%xm;q~d;|qvdfx0dl9}rwUrvtS{4obCbAy~s6oFTWH91vgw +z&-1V>u!cQL1$YWZnu;$31AEpA>h_Q2+S?YTuth_1hCDeY!uF2pErIN_(~c&0N3$#m|rDL%Ek} +z$h}A{h0GCwPscY%bG!T*I^{3O{G{BgG!dkhl7CJ85wKoeEB}UpU(e$3^J#Q5p2eW> +zmcu8E$rCiu7u5OL_s2olhL`ktp7m(%2r_Qv5hD43@81U2tNBj0aP&9DtinR6j^v^M +O0000^$1>1*2r6ecS +zG(OB~Xscl}XhU0a$YuS-;my2y^9mlGZm6xRMt67DrqG7Au9XbdRadFx(TXM)<4BWYY2L**W5D`0zcOT#2=!s)^ +z_3kCuJRXjnItBjDT{wK=1Z`-$Dxj-{i&rioDK#F_@-oBP1$@w&W}YoLn67UhN|W2L~3Z +zs%r&XRv#}+!w{QZf}n(a+|mvNN7evOUw8Kmv!XG5f+=x +z{(=H`?%hJyP!oDa+R)t53yz!tUYm!*KQ^EF5#L*c;a@3j{QftWzNWp9PniHg0aG($ +z&^10ag6Y{QWL0P3nwk&(k=AAS_tbqxcK33@AAkH#5rY*0WmQFNb}6YS;Hz)HV`Om& +zQ3}+q2uMncLrO+sBj|kLpZX}IQOLE$z&|{`D;;hH?G_y3e{79l0kF88bpQYW07*qo +IM6N<$f}fo<-T(jq + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/document-print.png b/gtk/icons/16x16/actions/document-print.png +new file mode 100644 +index 0000000000000000000000000000000000000000..f34cfc304d8c82b106e1999ab9e5a90dbd8d35a6 +GIT binary patch +literal 532 +zcmV+v0_**WP)f4NwZ7!ey!Y-o*BEQH&Kqy{ +ztxa{iT6XQ((XnU$E{2L2v2x@ZW6aj}O@MDcN(eA6cSSs@eA}P&E+H{BAgV5LyTBC$n6?fvU~~eKfER-EtzdQw-6l{ +z!=`N;FcmZs14OXYRZ`tMK5{HNIrLBR@Z1 +zQ7?`phXXlsjj<-{s<9SZtBSSjSJB$uOnTW{Ugg~3MfOdFoXW50)Qjun+vLbKqN1V< +zlgadtiY3byQCgczd3_;m?JZO_mQvMFLP>279dxKi+^FE-|K-Rv^rNUadFnX2rq+7e +zI$Fsp|EOm^6+Gm7@pJWv6R-3em_BnVL!A1d2V5QpZm)B&s2_Y_oYi(gLT&y#sG9oX7g$KvXoPXJ~YCmHbhywXCMTbc?Bz~t;G1Af0xS}0RAra##e0M*0~D27|v!U40Gu`g>qB8Bti2hvVZT28KubMWBDE +zn}JX$gvF%=)YeynQd?K8jOSssSy5V61PbjHfWE;l0yt?IDQInLLS9pZ__&4u5S=F*|y!TO>UKK`?Zg4+djj)nJ0G`p6mJ_41U8Fd5jkAOPxuD +zTItPd#$eGLYN<8SMk4A=nJFU>^p+&#cwL}aEL2USQxfD4dCNw#c3%ac(hU$$Diy1y +zR1e_ohnFy04N&O@nF?S))k6TolD! +z6FLS}l|V;#D*+tGeJ>cxVEU$en7QR1w2l~#U+cx#)i-hcYA>F5+h+d)w6=dBfam$| +z?Y`KKDI4y<V=bpI%qI2McySg25H1-z+B}Q(!2oFNJldKa?8+yDxRn>Dv4$_X+4e1o6D5s!QahoddoBf44XxnC{%Uv&0AB5F(MPO0nEL$jguqfYBVSaZhxR +zI6da^-X4Cx;o%`%zj4(CxOU?TMn;Cw-Q7j7uHYxo#Ey>6c303TXTQC@jR38|PoRi9 +zbyFSv{^KisE1aVKx9?w|8_I~PirWK*Hx=EeS{5f`O`?eOlKnVx>@Yrk`iL)IKI6D} +zl;*IOuaReC(e-*iz}DTjXK#IM#@(;&c<`eOkAL;y+227t`O}YwKYMWRTPJRPYQdGa +zjo4g#W5y4_sncZ_>p-RG*lkQtPs6E(#zy2wuaSGY8abzH7=gj>Btt%-rsi1|l00000NkvXXu0mjf5JmNj + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/document-save.png b/gtk/icons/16x16/actions/document-save.png +new file mode 100644 +index 0000000000000000000000000000000000000000..26aaea493243f86d1fdce1d4ed179271ca73d265 +GIT binary patch +literal 459 +zcmV;+0W|)JP)p4+aRm{V|Wq +zaQ{&GO|53DiNTg%*LvW^PX=aN_CI&*N`qclHXg?F=g;wZWpg>`oR^{Bl7MbYl8j}4X~0gEZ9CJ@ +zt~m&iR0NSk@bSu|P;R4?P=YGNh$0YY +zWxg0I^~PASC;IM}2Ig1~L}!}z;a~17%YpP~z4u8tjxFhmLgfGe002ovPDHLkV1i%q +B+*tqs + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/drive-harddisk.png b/gtk/icons/16x16/actions/drive-harddisk.png +new file mode 100644 +index 0000000000000000000000000000000000000000..bec3a098f135dc0348bf94d0ec6918c2b54005a0 +GIT binary patch +literal 838 +zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf4nJ +z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1T~L5e~$ +zOL9^f98<~@GfNT`Jd^YD6hcyS3vv=mQn&7YZVyx@0aE5zT9T1p#Nh7d@9V1Il3JXZ +z4pNtxo6uKQ2UHUTQsbOoP+63jo>9W!?5yBeQc{$eR9cdmpQjs~0d$39PG)whLPkkR +zft9{~a#3nxNoHAUa(-@ZeqJ%iQTjQV$*Fn8sm1z9mAb`=`X+h?`iDc3SQ!|Yq&!_5 +zLo9lGC!fy>c9b|;|M{#+`J`KF8;{yYYLo_we^Ydc*?D#D1@?lsPOb%t98F3hM?wqr +zYgtTpe3aEvEQ~hrowa4>_h;wi#djX_(*3fgE%99WxpKb64Esv=?dj06Qx1A66X2C< +zcx3wa_jhWSTFvd_tt;EGuWs?Ot#3_n}*szjD`&kTNA1&v0x|WDro+aINf9 +z?X?A_P$o$tBKJ<%OWer4+zM9!vht2TX?%RR;D +z8Ym&?nC(2xPn;!Q>%XhY>ELP8rg17V{Qk_i`R17pj!LuG73}XSz-1|GZz2m{2 +z_P>`LIT)9UG#}J|we{Ack2{U3{&{43pmNk0!fr63~C9{|Wl2U9WFTei!^Wxi!dD{gi8Z`^+YM6$vyZ*W(W6R13 +z&y9E8)w_CRQ)Tw#r&C2kZhpSgI7RY@06)L_mMC5ZGqXIsocP`Q>awPqoPNd^VtJra +z{QkbmrxL@mw#>u@w^!r@@YC4FSJ2 +z7_Q87{8)9sY}+HRcehYyeOU|4(|K@pzN6yYbnE_=0?5A}pQC=b&bhkKPQpBy4VjYq6&#RzuMiL%9Bf1V^@W6>W-8*3CnWst1Yb_J)n1uv|9k&_o@J!~2K#Y}!2=+N +zegx{wO^`+Q2jaJw`trvC_TEXT9G;vMDe5Z)YpNK +znotP9yfkG3kn+!z@OCO>jI!PcsjoK=5j!44%w$ld&#M?f{d3m{m?7K;gDiQ9**GPl +z9i)d30%_uGRDr&r7p_4G^w0(e^K8oSz@s;68a0jk=r}Ku!`dhrthzcaY!Fgk0&xL# +zfCHoI1eUB?!G^%y>k)t5_n>gn(5htkb+xG>eLp1{72+Xy6$-n;rJc-GzXtXm100000NkvXXu0mjfwLTq0 + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/edit-clear.png b/gtk/icons/16x16/actions/edit-clear.png +new file mode 100644 +index 0000000000000000000000000000000000000000..279cf0e4af9b490488b1e86980ea2e1a1bd2c50b +GIT binary patch +literal 249 +zcmVqoENJUhci +z4m#_|IfoEyL+xWj4WTHyxP9xcW9a13lY8t&;Kr>hejPePEJ6VA;nO=PrP2UED8iyO +ztJdKkGoc40EJ=e1rnEyEuam*b0o+HN&_7tmI +z|CY<WdP)s{3amixtYbqIgn)u($bHK9H+kb@6OuivvM*;MUi1) +zVHWfT-NbJKdIMM4+*IeCpPd3p65&{?UDWARxBN=h@~X$PveQLkFgH61O-*&1etNF- +zHvx|O;f&C*K*z{%KTJ)GfXCwo`!TCqtNrn6olbp!W@fr5dOR>WJ`BTyy(GR9bI$rr +zfP6f!dNwgJ);ToT=M!-_)*w7GL{2s(Dh|iGk37)d4Y6^NZj$I%-k*AE`5zw$2@Q0# +zwKjQ^Qxc$mpbrufW5HrGlGq!;p#csxr@s4-oWH%aMx#01&%jUOhlP>RAs8MR1hO^+ +z2!r_U)W70=LkdDSnQ3|;g`yPl84v9D+JXZhDmn}zB10fD$NYuvRH44;40EqwRosA6i8tSbhV#!CEnBy`Z98_z>yJDFW|s9}@lz5JI@!F16@6!0 +zw{DmiMyfscTu=YC*8=7iAtOb(7w@|dOk1`{Sn;wHmi3Z7IsdgMUON}=y%)$G!I&}j +zR}8W;OdW||div=uBX%f1>nwNYRab3d_2gd#EHoY8e$`bQ)#sh(wrtxbVT^0=y6eEg +zvNgzv(EE8uj<{!TyA75fcmRfRH2cn-F5>j7KoUY1<7%#ftF8j#Jafw}kaPI38&`Y> +zl_138R}C`K^a_b&rRg?Ixbd&Q3!hzQ!D&qtwPvE}In3d#2r)kajY)lhskU;b00000 +LNkvXXu0mjfnZRxb + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/edit-delete.png b/gtk/icons/16x16/actions/edit-delete.png +new file mode 100644 +index 0000000000000000000000000000000000000000..9f7209ad7e45e008ba43a1fb3d7d67cb1c0c2e17 +GIT binary patch +literal 806 +zcmV+>1KIqEP)z3*4xF`oY8sajN( +ze;!k-S1T<(3~UZTiw&e`YUnt113x6|6z##v{cMg4;h +zk%@6qz1_*#?|wKwhza|VNe8A_Bz571;0e?DJU{&KJ=foG4OW$0F2{xq8$cj^(utHW +zx`-gm2Ecxv8BX0ENqnzdxsou( +ztu-t>{R|SPUw0bS*X1)R33kV>Jv|(?d{}0 +z{cO$}vt3k`&qOZpo11QE*|0ve6O;Js*12xuZ`=rg86IZgndgWG`U$!^DUOWJ#UqvOrdDze;KQ&F*k09JDvD{yAj|Mk>vu%tH^$+Zu-M} +k2-Vjuys$&{%YX8J1)`vu%H5Vg(EtDd07*qoM6N<$f=dXE&j0`b + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/edit-find-replace.png b/gtk/icons/16x16/actions/edit-find-replace.png +new file mode 100644 +index 0000000000000000000000000000000000000000..e53765894346da337c4136b45ce12cfea70167d0 +GIT binary patch +literal 920 +zcmV;J184k+P)cH;v +z<LkUSWj{R&3vHgB7__pQ=u=TS&5&~4!?Fp#G#MIm3vwDsgr>F;hsk96 +z)YMe(nwpww@9gY+?d0aSIn>IF+_GUcwryI6OF5aS%gsfvigFi2#(CT0kc0y0nr@s{ +z)MFL|1qJyZJ9J2|qT;g>B{()XICybCH}34Fja*#0auMa_<=C=@g9kny=+KmX$`H3% +zGZdXz3T^%Mq^7RJRt_iM`s0fiLbbJTX4cogpY>slt=aup>9KdmBXN2k8=I&Kc5K^> +zf?)UYMuSB&7^3ERLt!y@pl7^|)YW(2xMj-*S0nuzhtFE+=}4{r(k1O*0-l`=7*0tG(0e`bl@zty^XB_0_9IU$PW6D7b&% +zA|Lie|9MY*&C|fX{3xi{roN;<<5Gh}mbTsc2`8V^SZT4J@Ciy{maTSk`WX5nmD!ty +zzvXJ+c7Pl#Jhl)^4H8(iV6lGu3?YNWE_=_TFm*gS?P|M@coi~Z@{i0uf57=#xb7o~ +zz_4==UKvdaiHL^@{z!a@iHKqHNL1h&yh#v4{{O_63~(-yS#|LM;kEpAmMkooPuxqh(XVqO)Omz#nUu#n@)<4##&Yy#Do?PQxa`j +z&{-TmtD_)>;7yHy=&i*!mKH8~EFff!VxBG0Phc%xDjK(B;k+IVP0jxJm~f=Vhx3FM +z&F`fJLG~&qlYMl_&Z2a56vUF{Inr<5`7wSGyf{=wE2?!X%1Jhw8R&wV|9xnnF5F_b +uQu1?0VT?Of&1^yNUlKK{HS=MrHT(u^5J+EZdPPqF000093kwrktn*{18=+P0PaZQHJG+uZhS+o)~3$>zO$gX%mp&&=<8@q`Znz$ON` +z^l4+F{R(Se#|I{R+7}QgqZ;a=ncZv#y@)z1lc@TMz1Kh8$SCRtX~zV7`0)(9`TiKB +zR{lbo;EfY{k@Z%8DbNWivoepYUcMRkJ)FGoIv8^gldq^a(J#nLXhSTT$}jlm!ZJXm*D{(?9QN-N1s0GuJ)?N8b!e-5{FMF!hrPth{6K{U>wuEqq^-Q+KDrh;-Ro +z?+=51P{D*2v$G}ePP^iS*Q`e$XaQaGV-$-mzD5v4P*+!H%ErdV==k{f7al$#v1)o@ +z)Pux#;MkqFH?(}xuWSmmJrh2NIwA$k`aWr3Nk}6iB0>vtax8!S^#?;nP%u9~UmX`0 +zcU*@RBE@X3Qb}3g0NU9Us5#wQ*njj5U<>ZjEX*zb+O^A$-+lV2Vt4nK&-C_w^X!jb +zeyNOVW)@EIMi%GjjO?F5&FS{Sra;B^(n8FEHn5Z=(3rsYeq7u=NoVKRFLicyK7v3Q +z)i9pteRJ-0`d-{upkjA>8V?%cUy_tWQ}zdAAT(~}64QO%gU +zzl~>~K<+;w1+=p%P!Jxy!gjg4<`Gm1e7j64DB>7VU0r7S!w)~afi`o7oA&Hf;==hS8PcFFlm4Mi#h?F>&(GsUpTI7;XdIVK~S4b&nSf7NW +zCoh1es^W^=%P-jN_?3}_d7KF|`UksiBrC{%!4dxEFC3hoar3w3l_{7_^Vw={ +zP6RL{U`|huxiJDKr`8tFuB_l!w>D|sJh7Aq4erO+Zd~Cj*DmT^-SvBH^YqGc-aWjE +zU}jiCdY0wn!iRfj!3-=v>Y+!EJ}6wM5Mp%d*cpo!&BM?(E(`<6Q?5RQ$XZaagz&&1 +zDCp0^?k9{LKMp^mYN^24g@U#hLg=$4g98&{w6B>H4`gLL;Zh(1l7B0@ng+O~Mn +zlJJDE!XA(hVnz%Z1+Xj&Cy$?m_EwD1s%4AB&Jw>WfRG{zV54oit@1UsiWsr2@(r6v +zz7M8f6{J!r96xqEECFU%0Ryeuw2l%9pQW)6`0s8AN`RNWk)? +z)DQe?4>XP(J{mYH8pveYAsLuh0Tk$`CdNZTL}=BzRT4l-0S1TV+K~cPpUi%IZ{;dl +z4KbKs=sjvMvdse-LXrVK(^)6B +z?~M5W`RCjJAlhdJ#1N=67#O`KvU_+=V%z97iR~{C|Hp;vxBC2l`t2&1_L|5x53Jd( +zhxJn8BGvy>PbdE0`)0!bgCC~i#b-aS`hWSu_W%Bq1pYHPx3hRe&5{1U;9Kdj0j*YC#92z)fu!VtRBU@X- +zeC7Wu9~J%w(jc{vFtDp;`BigC?Z0~m$A8-@RwEpN2vo=VD0{8e|Ild?|81+8=P|%y +z!McoPW8x;E|Dg-`{#%u?E;BDDT{|^H~0UFi%S0^ +z7YYBjuV(*mRl;)Ex|pTis)X6wxSW9>U-W_iqg5%(CGQ@-|Jgg_|F_=N```Y+;BebR +z{q~Lr2Hxdol<*n=Gldc45}-jFfwuoec7b^=10T&Z6Ga#RI@@~*p1d7@00000NkvXX +Hu0mjf#m(zS + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/edit-select-all.png b/gtk/icons/16x16/actions/edit-select-all.png +new file mode 100644 +index 0000000000000000000000000000000000000000..33146777d243c1542d53d64850ab70fe367ba4e5 +GIT binary patch +literal 320 +zcmV-G0l)rfWy#llInDazT~a%Tls%elT1Ewm&``V$W$)& +zk_xbgmY9by}S<_%5tz+}f8V7nP;Mw$%z4+eh&o8$QwbG@J1KllR#m2}GP +SN91(?0000qDe4w{EhP@X0!>g|F@L&)sd_(H(^b|n<1&nd%=`|8}!iGN~`Y(rwD=ZXDIuc +zoMd&0DP^X~Ck%?^&v^{C+RdVb>vUFMMdOb+kH-=Ny?0P{)7#GS?5C8OdT;P$Ab*YC +zV6)y^X!{zkWVF);%GwMh+k|L6hq8m}8U|bMq2>!D4;D0y7dUGCX$JE`XH(wQgJhQw +z<;Qp_q$@ocxDNh3#%8(K_Rw9-Nc$C(wb_s<(tM1i{~zI!k^-;(E8wB=YBs$L*0MNm +zKTW?c;{V4uKcs--q|?h9bIx6=%Rc|AKIfcAP39TKx*ed|&*cJhX4Qo + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/folder.png b/gtk/icons/16x16/actions/folder.png +new file mode 100644 +index 0000000000000000000000000000000000000000..135781a36a77ab89ecba626d6fc84514f44afdc8 +GIT binary patch +literal 492 +zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJbFq_W2nPqp?T7vkfLzW3kH}&M +z2EHR8%s5q>PZ}sFS>hT|5}cn_Ql40p%1~Zju9umYU7Va)kgAtols@~NjTBIk6i87> +zW=T#egJVj0VrEIAf?Ix0N@|gUXL5dC@m%)!r9f5UAXSc~B^mie3_ghk`3la7If=Q6 +zc_~GynfE73X#tf4fs{Ds7gQEyre~BeI6EsimXs7_CY6?C=I7}KX8_&cn3I{Es*q7q +zQedU8pInrhSdv+mnw+1T3$zI2B>kMswa?8>wEz731 +z?q4_e!209H;J1-vHb??fl-PJ-XfhO{n1o;IsIQRv@N{tuk(he+)J@R_1s<1+9lwnhxE=X&e}%-s#j+LupQ(nFbsTHjl=fMW-@h^3 +zCboZtFIP@!^2_%JKI^?IXfc(`xuv8a{)Ct1rz3~x!^NiRE-k{|{*O+70GiF<>FVdQ +I&MBb@07W&u9smFU + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/format-indent-less.png b/gtk/icons/16x16/actions/format-indent-less.png +new file mode 100644 +index 0000000000000000000000000000000000000000..b832b208ce89d48710a9fde206ec80f00802628d +GIT binary patch +literal 432 +zcmV;h0Z;ykP)U0jULGe-nK;PLcwYjSaOf;^A2 +zt3#6rz_;&TQC?Mo;<5r{=Vc%{Edeockq8M7gpa=$T-=>tV{Zi$GefYwA^?vcKWw^j +z<2vMd?%usEdILot^7QeL%Gu4sxk=zqFrA*(qm*fV+MY5XJH{CuJuT?yZb4I9J!Y(w3G|>oz$a9xw+05 +zknya^IUJ1#VK?R-Ms#R%=o6il=)0Szs|fdTT`HV+yo|#>JxtkOMz1=h5aU=;Q-;dg +zGL%*pp|B(m8QH0V-1$HTHK}mi`T`D{KA`O{ZPUYt51Pbtf6ye3N-zh)9gJ-HP5bpf +z$xh`Qh)gi<@^nBV0OKALABCvca4!Er@DKEXr?(rNTpeIzXUTQINI)ME0Oq?q9S{Lf +a_BjE-w`a8(4#mx~`w&qy5%lP2Yqla17u3g1` +z+MPRhm>B>#QlkzDQtOnU*-kNXgf*SqeyC@t%Zrb;u0|GhiqqucOd&=so}){gBDa6C +zQnRav6C9lFU}<9pLlb>y>8L|VMFEmB;;WcYs~Gu=nmonAKqywm?VsGce~%ZR+qZ9K +zQPl@J-6TTe(=KnY&}xNlnKS5;AnAQ$Q2L)7JJc^?zDx|gnitV3x|M<6GViRl>uGJW +zL3zJvc0TJJT9wbCQjm#(y`v4RY|LS7Y5*NQO{l0T?$86Jee&|avPf)#AH1f +zMt{wRr?L+<{S=!m=}%^22u1yH`y8;?jnEoYkSfIZ6Mp0E^9A>hH#oaEsrfLp{+bUP +zYsADnsNL(^Gci~P+5t5$irS0$o2+_h^h(GI`u~ML`1pD)=`a3t1?=o>6aBSs5EI?P +a`~i855R(ls3Q%bP0000)5z>KXe4$8iyw^dvKcKU#L(ebGLXqb{%)mrI#5R-9?ArV|hKO){cmjL7`!)W6*0xra#PPRY +z(9lpHUR~V;e`By<4YKbVXlthGoSvLLF=%a8Ns?C6 +zU~yJudHzj<(i&_(8uSnLg0?ZwauAWn{DuhaHg%TdvJO-$A5`O+Z8~V3wu(h@6 +h8?^t}{=w`w$N^zIl_ceDiKYMm002ovPDHLkV1jcuf`|YB + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/format-justify-right.png b/gtk/icons/16x16/actions/format-justify-right.png +new file mode 100644 +index 0000000000000000000000000000000000000000..a80e1c80865a9eb884ca0d8f4b180328303b448a +GIT binary patch +literal 267 +zcmV+m0rdWfP)^K5?{8QndxYD;wQU|7Pn#^uP$ZOlz|rv`;srLFW}~{R +zb#;C{=Q&_#cu-ziT>w!KfDo!?qGzhLDY3^e#_;<51`qd-ZJq=A`+E_`{ik|CS6652 +z=jU&(9D}1%_3tdz-yH*4HMlSg^uKRxt%9Vs8D&5z^<+Y{ni#ciK;ZrD!!Zc{y>0`4 +z*gx7sk|@r`8%V0bZRiVhlZmM@5JfT61QP;3U%!rlKlJwYAdK;BEe6dWpa9Z4%i#xy +RK@eBogh#xz*Ad~q{@-o<^0MjIb(62ORa%5vh(3S+DO +z`)}d7X&?Og*KhQ}ho8cAJvfdH+jc~=?>56QkZ&Vo=Hw}hbLVTul#7;SX^NseEeQ=vOT`_Z52j^7*Cu>m7<#CtrV^^E;^BuM#uwj1zV|r)98-`OJ2dBNlrTr`0F>f2)6`!CbN~PV07*qoM6N<$ +Ef>#4EkN^Mx + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/format-text-italic.png b/gtk/icons/16x16/actions/format-text-italic.png +new file mode 100644 +index 0000000000000000000000000000000000000000..320927b2da3db6587a719f0ef7af8e0deb5989c6 +GIT binary patch +literal 697 +zcmV;q0!ICbP)ATQ?t{G +zg{4K9nw^E-fk9}+38=2Gl{YrmuMG|lLH}U?Ms;1){r$k|>S`UHfP1aGw_83pzW@Wn +z!%$sUBNd4FlE44`>q`NRx>-i2Lo?O}Q!`T_t`aJ^T(0N-1uQn>Du!dL!((H>7l}3* +zO!`*_n{kTCWV+GW^jHS7Vwv?9^Xn-d2ma^$x5{GE&+gZNO3g1tN@)vDKuKjK6jBS` +z&}cM|!>Lhe1veU-8rBVZnjm**DeQnoM1%*-^)%*yzDx~>lX=kXyeJyn{PmK1k5 +zI3*>;GcP|^J~KN7MI|(OYI^eceix#m!v8BSEtX&;fnF}$h>niBbiA-JF;Q1JJnlM& +z&x7!YFj;VLu<8B&`F +zdlEi4GoP=Ep08iUq~42 +zft!~P7#JE!P+a%+1?Z?ND=QBxE33Rl^n;3u$_=DDg}@VmD$+ee6t+M~Noh@0RrM*- +f34g;f{UCe;Ym+uZlk}V|00000NkvXXu0mjfcv?&i + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/format-text-strikethrough.png b/gtk/icons/16x16/actions/format-text-strikethrough.png +new file mode 100644 +index 0000000000000000000000000000000000000000..b44416df9db28dcef7c598c99fdde3b7cf39f195 +GIT binary patch +literal 480 +zcmV<60U!Q}P)$rIN3QnIrheJn>V%yGLkSOHl_05(0EY^bWcLj5cv(((e +zjB$Qx?)l>K!sGSL^(TCh2rKKW`l*@8LqD_z9UUExMIr5)y{uSy2@VNHNJt3vnZVoIdrLxMf~KRV2VMRBsB3OPYF0Laf1=In&31Nn8V3i5+awl{m?CAcwY7nbjSWZ{MKk~ZHogQ+ +WSy>O2s3DR70000#fBrHn0N@{b +z`n%lSy&dq2&hC!Uj?UJ*oqe52%=~|5H5^VW+_`rjuHCo^XU|`NgGY}--(dfY&0&7y +za@Bb+DyXTicGuKZP1QEke5r4&`(U+OKelyrLX*`zQBhTXc2NNXK@gs$rTQR~$&^x5 +zWGE`HEc?=6HiNOy@MuASR;%zO2<$M1YaU>P<_k`004HcjY}DD>Lg(1$c?A-Q1eM7p +z?}|!FCTkm;pvh(jM@uWTb#(zoQP4Ly03wMH<`tx8rk|536rjSfncV!`51H8+A2Tx3 +zzGh^kO=RU{ecioxH>9QSm|wsX@Lu9ODd6#WV_Yt(LQyoD%jNp>cxWbv%bq@Q>KM>* +zenEUf+=Rt$0lt9uF(y8yG%hY~TXJ&Z$<)-8&pLw^+B(}IHa2E{K}2NuE1Sa#a + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/go-bottom.png b/gtk/icons/16x16/actions/go-bottom.png +new file mode 100644 +index 0000000000000000000000000000000000000000..5cc6469f8906c65721337aa81867dd57081a5b3e +GIT binary patch +literal 409 +zcmV;K0cQS*P)?kHW&4)hkEtrKO*`QK5T4ktu0CG +zd=&ht0ne}I@gj503(OhMGX)O~4696F|*K0mXwiY$D_&C&U%L7mbSnT!{|c?{hL=EiNy#^JP4JRT)5a@4>5kp@Tl +zN@wS$GnZHA1V;YjpV-siS>Dsvl?4ClD+Ar#P5;548Z@@lcQ>^(1Xa)vkZfvg=qDJ| +zHB`$Mi;?_(@3#Rx<_HFr)#d#vk}Bv22v${9bi?2V5wz0ouP1VS00000NkvXXu0mjf +Dtzx?e + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/go-down.png b/gtk/icons/16x16/actions/go-down.png +new file mode 100644 +index 0000000000000000000000000000000000000000..76cd3291cc7ec65b8f0581827ec6a2da66cc16c4 +GIT binary patch +literal 403 +zcmV;E0c`$>P)HM{-wYAGTeaRwvRo~k0>MA3 +z4-I_GA_2et!JlXFhx+>r3Wd!7LMb~@C}u|sg>3t0dr&B6yV=}YzLXuqchH!0E;+Wd +zvqgtT2h`hNt*3Jd&U-U}4u5}tkLKoQD3eQ0Kxg8~=-SHa5?x(g(dp?4J7Te(NJKc# +zrwI-nK5|P-^At};M&U7`kiR>dPt~`!Hg3(6lM~7pGxcD^$3XxH4jn#n$cJM7_Qy^1 +z`P`gDDpudzTEG9vF{Ltzy4UaS1%g9|j~w!EPQl@}aw5@CeRFf|@h6p9=@!AE!$DS!9DmST-`H5a{ixY&-Xb`3_+Q=wyIOaT-Ob&lnh*d0002ovPDHLkV1i^?yIlYP + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/go-first-rtl.png b/gtk/icons/16x16/actions/go-first-rtl.png +new file mode 100644 +index 0000000000000000000000000000000000000000..27c97c8a13869fb72b815b3cc435e7a9f11d3811 +GIT binary patch +literal 489 +zcmV>|<<~!EhC!WcKh?X!6#!Tf1ZGu` +z*n5J=UJ(TL0A}Mxlo=n{RYZ|-;eQ(P5_`2$QQ*gq?{MbashTKq>*EBZtbSD91L60M +zfSmcwo42o^TCKwG-@hhFPyk=Qeg~_mgxwT6L$d15h +z*5A8w^)ftu`~Z9bZ_Q}YjV!lzzrTL-5(w3fKx5oq)#`VyYW2HsH2Uo$n2j5qZpTIT +f6f(Y!V43+3#X{LET!T?>00000NkvXXu0mjfATH$3 + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/go-first.png b/gtk/icons/16x16/actions/go-first.png +new file mode 100644 +index 0000000000000000000000000000000000000000..55ea8270ca78718154e6102b74b2e37fa427babc +GIT binary patch +literal 491 +zcmVq*~lzl_!`@`(e7gGWH+&$wEaGI_1Cylr)@r*?_8a~SrtT7Auch)!XoPy +zMW!EpHVI4YM?qw*{33fS2+V8DLJK)8x!ewt{d=~sC~}osI~%^Q-@eex%M)&I5&`t} +z>t}-J3jhB7i@aVhnau_gMD{2*AWPWoani=tnokhew|N2C!kA;99Z+C624FZX0RTtO +zvbyT^&6RlA?V#25C7+(tgu<)q%i5(C;Ws=4P-_(c5PX4Ic%{)Qr0bgtgdy77-y(Uo +z9(`4W@k;Q}U|ul;0Ko~pa;BQ)bv~!l4gmf7^^16s@y#iwGrxnWnF#<0jvktxo~YF5 +zR6d8(7J>XE9i#DKp7tG#jt>Js@YoXbiJ?k`a^B}~SYr^CTH(Vy2{16!2LQp*C#rv_ +zzj9`7%4fG*VvxCo8DHN}-^UoBySI}7fTK@UPfus%#N?RIX0wna{UejfK;3`O12i|+^*6QDyJZcd&!(oP`nQcO^+)pE +hO=DYa>}f1Z{{aPJ*!9}CRIC61002ovPDHLkV1h46>%9N~ + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/go-home.png b/gtk/icons/16x16/actions/go-home.png +new file mode 100644 +index 0000000000000000000000000000000000000000..c564b8c6199a6998cf943bf278c32309299a4f7f +GIT binary patch +literal 582 +zcmV-M0=fN(P)?jf2W5$^8p*WInz9^BcTnL1Tnr)>%V{Pwzm +zwbJ#iSBS{}bbl*)p2ejy@zJyAPXQ76eBr +z^X5k_Up;mDB#cHwXt$e?&Amq?9CeJN@0SFwYcBFaJA3cm-N-zGMxzGjFPw#N!b3z( +zbc~}9{a+I}fw6od7W8ttENQt?DZ$a>hq2l-&$Cw{B1awL=tIBl8!JeH$Z+YwgL`Dw +zZ1z3u*}D^5-#$Gtq0U1CqU{=|ckSK=A3nS%zDJMlgQhF@J|zgOb62lkB4RQf1KZK# +zs;bWTeoo|yD#f=<`f&H|Ew~c-MVY-o5}2mCOgGi1njsGqUD}1BtchzRm9L624}!!s +zMUh#9Iw#P(S%K=%+~(I5Pc8VmL{a9tPoF&oUSz7sS)OjbeEAH@~Xw?Y?IDD>z*a6s90J*w9QtcGqpm +z`l`uUE~*rgpxsvjEKoHC%9?|DnX)@8Vx)PDB#T&%l0X&^@V+b){rv7_85uY)qtwsy +z2-mmXk|2(~GK{@<5P9%J7hd2H$bPt>_E$a6#S2Z#K2qh8=*@I!<9Z6dz +z(g2GAfK+K9nrL7H^@;j6Q1J^I7`+Qwq45oDw#h83-L#aJd5hhW^D}0#PZU_~<^!AE +zw7@)Jg9+2v!s^;G&dyHZ^}FKZrja80N!sVX7aUrj=h07)D4Gu}JcnW?2D?&IO%4kT^*H9up0Q%zA%Uw3?VZW<(Q-T$Df +pw!Eaew&IC2^pPlKWo4PN*ek@~+s5Xlpke?3002ovPDHLkV1nr7olpP( + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/go-last-rtl.png b/gtk/icons/16x16/actions/go-last-rtl.png +new file mode 100644 +index 0000000000000000000000000000000000000000..55ea8270ca78718154e6102b74b2e37fa427babc +GIT binary patch +literal 491 +zcmVq*~lzl_!`@`(e7gGWH+&$wEaGI_1Cylr)@r*?_8a~SrtT7Auch)!XoPy +zMW!EpHVI4YM?qw*{33fS2+V8DLJK)8x!ewt{d=~sC~}osI~%^Q-@eex%M)&I5&`t} +z>t}-J3jhB7i@aVhnau_gMD{2*AWPWoani=tnokhew|N2C!kA;99Z+C624FZX0RTtO +zvbyT^&6RlA?V#25C7+(tgu<)q%i5(C;Ws=4P-_(c5PX4Ic%{)Qr0bgtgdy77-y(Uo +z9(`4W@k;Q}U|ul;0Ko~pa;BQ)bv~!l4gmf7^^16s@y#iwGrxnWnF#<0jvktxo~YF5 +zR6d8(7J>XE9i#DKp7tG#jt>Js@YoXbiJ?k`a^B}~SYr^CTH(Vy2{16!2LQp*C#rv_ +zzj9`7%4fG*VvxCo8DHN}-^UoBySI}7fTK@UPfus%#N?RIX0wna{UejfK;3`O12i|+^*6QDyJZcd&!(oP`nQcO^+)pE +hO=DYa>}f1Z{{aPJ*!9}CRIC61002ovPDHLkV1h46>%9N~ + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/go-last.png b/gtk/icons/16x16/actions/go-last.png +new file mode 100644 +index 0000000000000000000000000000000000000000..27c97c8a13869fb72b815b3cc435e7a9f11d3811 +GIT binary patch +literal 489 +zcmV>|<<~!EhC!WcKh?X!6#!Tf1ZGu` +z*n5J=UJ(TL0A}Mxlo=n{RYZ|-;eQ(P5_`2$QQ*gq?{MbashTKq>*EBZtbSD91L60M +zfSmcwo42o^TCKwG-@hhFPyk=Qeg~_mgxwT6L$d15h +z*5A8w^)ftu`~Z9bZ_Q}YjV!lzzrTL-5(w3fKx5oq)#`VyYW2HsH2Uo$n2j5qZpTIT +f6f(Y!V43+3#X{LET!T?>00000NkvXXu0mjfATH$3 + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/go-next-rtl.png b/gtk/icons/16x16/actions/go-next-rtl.png +new file mode 100644 +index 0000000000000000000000000000000000000000..be7de5b04d709dd7fac0bee26ece4872166ab0e2 +GIT binary patch +literal 403 +zcmV;E0c`$>P)-Wk1e(LJ +z=kAkdA`_8VFb59|^@YfO>@~aAo++NF=T|V~ +z{ajmL&cWF+IW-EIyP=|%?B~o1*|qkZ`{4FD=qMgeTwb2%1iZYwKpc-ITwZ&73yNCo +zb_+Ea_9reb&k91GAsh`RviEIcP#i{!j_UQf6Bie!B_aNRH<7(>E1)>kIyKedvL(*X +zPf9{u9!El@Q}uRSi3)|3YO$IUXJ;qy`S}4yM+YERNl&}#1(B3b)f;t*&CNBKotpuX +xL@?Ktfb8J$*nhbK_AF1pUgwIKU36m?;|Fc%;826Y>_Gqk002ovPDHLkV1fcVvwQ#m + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/go-next.png b/gtk/icons/16x16/actions/go-next.png +new file mode 100644 +index 0000000000000000000000000000000000000000..64a6cf723d04db92ecbd5d37a47aa78e414a3beb +GIT binary patch +literal 388 +zcmV-~0ek+5P)}fDG}b#eHv@ZnyU^11uSik2pe_e& +zg1&bjQm*C%eN8#xlz#vHnPq;FrwG19=kbi-_g|*CwYC1>%SQs!jCxoq|+4@o2oh0*Pd-i1<~f;BZ*JMC0KH++YQsx6X5bVi&}%KzFSaeB|N2C+N)H{ +iRupQ + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/go-previous-rtl.png b/gtk/icons/16x16/actions/go-previous-rtl.png +new file mode 100644 +index 0000000000000000000000000000000000000000..64a6cf723d04db92ecbd5d37a47aa78e414a3beb +GIT binary patch +literal 388 +zcmV-~0ek+5P)}fDG}b#eHv@ZnyU^11uSik2pe_e& +zg1&bjQm*C%eN8#xlz#vHnPq;FrwG19=kbi-_g|*CwYC1>%SQs!jCxoq|+4@o2oh0*Pd-i1<~f;BZ*JMC0KH++YQsx6X5bVi&}%KzFSaeB|N2C+N)H{ +iRupQ + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/go-previous.png b/gtk/icons/16x16/actions/go-previous.png +new file mode 100644 +index 0000000000000000000000000000000000000000..be7de5b04d709dd7fac0bee26ece4872166ab0e2 +GIT binary patch +literal 403 +zcmV;E0c`$>P)-Wk1e(LJ +z=kAkdA`_8VFb59|^@YfO>@~aAo++NF=T|V~ +z{ajmL&cWF+IW-EIyP=|%?B~o1*|qkZ`{4FD=qMgeTwb2%1iZYwKpc-ITwZ&73yNCo +zb_+Ea_9reb&k91GAsh`RviEIcP#i{!j_UQf6Bie!B_aNRH<7(>E1)>kIyKedvL(*X +zPf9{u9!El@Q}uRSi3)|3YO$IUXJ;qy`S}4yM+YERNl&}#1(B3b)f;t*&CNBKotpuX +xL@?Ktfb8J$*nhbK_AF1pUgwIKU36m?;|Fc%;826Y>_Gqk002ovPDHLkV1fcVvwQ#m + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/go-top.png b/gtk/icons/16x16/actions/go-top.png +new file mode 100644 +index 0000000000000000000000000000000000000000..1e68e57ba1a147b7d676a1d5e221bc2723cd6fdb +GIT binary patch +literal 431 +zcmV;g0Z{&lP)^stc_0+^^Yg___44w9>h(GS!J+>;;P<=vsZ0W8y1TohlanJLfkTJ? +z?SR8=<;N1?>cz!ld2@4}3dIZ%oS?%;?$dzPYT^gOezts$Fl}tEkw56IT5P5~5F9#u +zVMZLoVqTW@JsJ9a$4rO9rPY8|8cDMG4dWYEjIC?)miElpvhbNKy +ZJpglZ+Jo~$OZfl*002ovPDHLkV1nzW%%A`O + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/go-up.png b/gtk/icons/16x16/actions/go-up.png +new file mode 100644 +index 0000000000000000000000000000000000000000..d26a540d530e07c7f81d3f20d46fa8a0d4f98881 +GIT binary patch +literal 336 +zcmV-W0k8gvP);DV7L7i?`M(5(`$G9vd41BS-zw1oMKfjTu<&rXJijnwy(z^lb|M;-mS +zxoN_@!KCYD23oD6L9J8tYP8A~l~%>J1wbq?fgfvHt+Gj&>rrb}W6(){B(WXvKhh8I +icRLWfga6&ZXK@D*eCL8h4VZ}l0000GqHmjYEVyo!G_)u#&V)jvD19#cX}`}~iK5gq +zepNKT{A&kPvnthfxb2CkEx84cBNd8Zb`bx!4m5%FQ$-`E3MP9&+&+)1`aSH$XW@0m +zqaf~}hxnRg;z;is2kH&hTop~6ey^cDRhjIo%)16#*<;ieoq)SafT#Kq+_f5NOCBR5 +zc!^KH*TAmwMvm+P4rJa~68W-^w4CzrMT%&M*6-G@&5m5*E6v!7qQrTq$T^0b=vBU;dktzy +zPI|wc!bgrxQYEXsFljAvqsE{(Wdk(HY$yKT?g4F~p7g#SvLi<$;eBrq{V$6|<;)6s +z(72``ZZh--4Qq)0=UdQ4OGxDNHa=Z6hy2$ueY(kp$eh7V@V^`coZM#P3I6VV20t0p +ULCH`v_5c6?07*qoM6N<$g2jFO4FCWD + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/help-contents.png b/gtk/icons/16x16/actions/help-contents.png +new file mode 100644 +index 0000000000000000000000000000000000000000..b3858b66a2751169b3a421935ebb33bf782aa437 +GIT binary patch +literal 534 +zcmV+x0_pvUP)f`wr$&3TUFm|&&4^9`T5Uu_b&hlP^e_jU&x+% +zpTB&G&MU;ePcD1HKjYQjm@=e>edmHc;`Q0 +zdTxUGr5To27g^g_VN3;qg-Kmr02L_TYe@Tu)CLQZ9oM+(k +z2h!rd><%b3a>gcyrK;JA7nm(3><%0GY6Y!L^~^8LiZ^IzBiEk=^Ya?e`S@D_~1dlYt-7LoRIAZZn3#D8J9z7~hmfz@XD9}vOt93o6UpYL~=jv8l`dOObF +Y0ccbpiJWLYeEu;}c3krYwQZX(Hdk*qwts7VoW-b+cOPFp=7P^b +z4}=hqQtDAPspbNNkVkm^{<)Ata{K;uVF22r&hg{NSN#3^3!NzB3otOo(2i&{j8rPA +z#t0ILSbG5lB|vxW{0#*Bu-WXeT5Xt^_@{mDB!HrsP$&S#D5g)Jq1sG+QSAlMOkTS{ +zRacL8ss1t{fF>C9gHqbY0$LSNy(k2)22!=ETYmrl?lI8wNF;cNC=)paZuK{lId +z$bw1xQAP#se^sMq>eOlF{gRO5Cr^TN2A^*hTuztDPC}UKEr`csEy1jZbB=|J7U0pN +z$N2v9J0$q>1_3UYS4B3DPI$c@yngitI-@4DY0buUn@{7|iNiwn$(5^@pN)1KvHm +zCaa1JB7*C(-q1OKz8L|}?_Sh3RRR%XeA1Njiy8v}tP(J1=Fpgl^5$*;0z`3ki*t8X +zd;ij#nPzCM^)8U>#N-z?1Q4^#Ob{i>`26yoUe`5E=Y+=N1Si77YvA10X3jl3x3ACLkc3f|31Dqt#AUaDt^NDU +zDB=-GTM{G!^t<807*qoM6N<$f)h<%0{{R3 + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/media-eject.png b/gtk/icons/16x16/actions/media-eject.png +new file mode 100644 +index 0000000000000000000000000000000000000000..a7b77d8c0d87d4a575536b96ecdcc8cbd6c9ca43 +GIT binary patch +literal 333 +zcmV-T0kZyyP)~7D= +z&%|dazbME4qCr|lk_Fg<{SF?l3!!ijs-}WI!!V%h8dO!a@Sxlm4N}sR>`5u{_ykb{ +f``^EXe{1jrjIso*G4+{s00000NkvXXu0mjfzoC%@ + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/media-flash.png b/gtk/icons/16x16/actions/media-flash.png +new file mode 100644 +index 0000000000000000000000000000000000000000..da5b7676037f84b6162ce6db6d10a98e3a564aed +GIT binary patch +literal 378 +zcmV-=0fqjFP)$XFRb8uSfyVPK>u8c07?P0iJR6jgEzAdT_fUs0ZP3l&K>&J1OV +zHxcLcS=N_~IR#XuKEURT7qA#}5LPBbG2G#bp*9;#b{cZfO@5#z^A)fV08D5AQ#x21 +zRzX|k8`S3AMNiEgER9%^m52dBTnGW?T`<*akG2LA3^(gyambVdETsT}z=S%+n!ckp +z|0$YFUt+TP9j05JbAUMk#LmF`VBdpnwwN2VmMxux*&ZGKGdQ?~ME+YSC%53ue+yE> +zH3D)BEBcg4A6|f@IpM~Ff%Fjsrl%(b10O&>iDW=mU;8-lho-ZB$ti4+N~z%w#rTu4 +YJEE^!PUqEIZ2$lO07*qoM6N<$g3C0Z@c;k- + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/media-floppy.png b/gtk/icons/16x16/actions/media-floppy.png +new file mode 100644 +index 0000000000000000000000000000000000000000..311dfb3a4724948b102eae402d06b8f4fa6e064e +GIT binary patch +literal 560 +zcmV-00?+-4P)z;}YOcq%M;aVTyvOZ2pX> +zrOTI`c8<3&v-vh`19}5LKMH1N*|~Fu$Znl8XI`MSMq>OF^oCdc7ou1ynTPl8ZZkv_ +zXr=Jz(Ied6wHHwoqB~NlG-e-pf=P9CAR=R|C9rc)T0tq`=g*($j&wQ=treVORI61O +zvKGwb2ZezH2ckVnp$)Q@nMDDNyqFkTX$W7wd_i}N7%>9kFLn%3-*^OWRxoVX(DwVI +zJ>oMa0+EH07g>T*3gvPcu~-bZc*U>By8BU4vl!nI(gW^U%n6dHaoG|2gC$n +z;=~CUK4N&YgG8Bpy-H?8Q4xQC|HZFAzriF5tSInDfG}Xd08F1T9jRm*vDz4FYhtKY +zD?VI>VgVN~Uck#&FEM89Sp5F=8)Vxl2%`{z4)E#odmKA*62gIl`~Mq97}$R>{)VB? +z7jdEk!%{m1Q5g9%#^VY96)M#VDwT?lR2YWdSotWhx6@2q{r>$sa=ARhDDsnuSQ3qR +zV;O_<8%VpY6RoYReE9Iur5Q7)r(`0~8bMHl`uamCmWom|$fUDSfHz1clRnhtQdv}5 +y)tJ8X0e5@u{5f%1#LVc5YgcZFp(tTv%$a{W+fW^TQAh0n00006n>r$uy~LSxC3lc8##4HJYZ&Lcv;6r&d|!(sdKvPxz$@4t_1O +zSsK=E$<{spsQ5tZ3$@C?R+y|Rf`afv(DKqE55?I6B0fRv61(oQeRJ+Pxi_D4&-dp3 +zP*PNonsP7&f}m8|d1@)Bug4cI5#(dpua$w4$U94;<8V0la3KrS8-}kb{ +zFo~oOWQF2^$K%oK^)A=ETs|mjY7~i@nwuMX#GQk`OGKhZvA9F0)kvlNGbW>MLgR5Q +z%+J}pu7z3C^!&W7v!k`6qs?xewOVFG&5g}X!l4JUKb4A+5v4}0>c7|1-`_hlBn7>i +z@iFr>=5;&09+%tY^thd~v(uJYlf!Q5?rQJp>bTd}4S2i#QA>+ZA-}I2mK*e1%%JP; +zYzKgHcxdF|@aTxr<9-Z!TSd)nq9#dyFNRGSG5wswrWzYnsm65L$tj&yKczG1r>2cY +zlgT(^nw~M6trps#{pmKK+NzLmc~ +zEC>860sqrr;7Ksx4+aCP!QkquKeQTH3$2FNLhB&Hp^f$M=EnNgdU$JdV`m%0R%B;8 +z8rg~MMvvm(G=o1VMoWvzpqG-9aVJmZ`A5Up@o@A}@2hX+tni%`$Ag!0^DYo~ +z-H;-?rIkrU6Eh0b=IbRN-9oCrEdNaGXn8-U8TiLx)KvD*Vd4*Bgxo^K`-K-a9 +zyfa=fapdcP?~)>YgNIq=4XsRBPGZS*;pcfL9@-?DE(iXn_N==^eN2@8Bz-O|ukF@u +a&;9)brJp97@Jqem)etSeh$=fl6&3_xWFY>-*Xyj!_P#X-t2O&Je^k{iW^&&&$wo#CBP7-OKDkT#8q;QH?3>FV~( +z@OP85Ej#-wK6cf=zea1Gt?3N^!%s} +zg+d|T72xFj0JJ)F6ooyto}3^4e^-EbJPx5y5QJi0_^Kk}>FM6zR|nYH-+)LY3<%lq+|DG9fDZ2+ZuK7=9Q=7Pz~aj6O?J6T0(>zCWLLl2;{v0}5Z~F~@+_>*rU1b2 +zCj*R44uL=5y8(;k0#Iq?U^MH&=l4P^7KPRIMHrhJ`uAjj?!I>L`aBO{v(#K-mWd*NiAv-r6C{%K^w7kfgotN=;9pvU^(6e&V>X1kz;%B_@BLOY}zkvk99N6~4 +P00000NkvXXu0mjfxxlRP + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/media-playback-stop.png b/gtk/icons/16x16/actions/media-playback-stop.png +new file mode 100644 +index 0000000000000000000000000000000000000000..29feb6fa30f55213c81ab98d7c64d764ddeaaeeb +GIT binary patch +literal 252 +zcmVEiTyx37TU)1wRe6-p~8RXrFZnBn*TYiD2$k|Y78RL&!eLxfQXDJ4AD!`{vTeIMKh +zQ4}FlsuQ+{Pt~XI!vrz1EbW5n${DBcBh(_oTLwnRxdLj}w3|<$nTbX=xFLM*GA``=4(8F%G^K7+RVX>HDG8ths8lczfpis)OzPZ97 +zw}8IEZk%2mVPt#&4%n-CY+?usg&YIJJ-9nUdjn3+4?y)>XC{qKrzPzjpt7bEdxu+~ +z`Yixy=qOa*0`dy8uye2hsvjFlD+}B`yj)ORUSPY?8Vm-~-T_k66S2Lwf$ZFLq@*Pv +zBQu4Ib8|DfnNmSv4xcM1%7Id;Kw3u99UwL#iZwRZVsmGe?<6uhluzE6=_Tk@Y&IKI +zDiylA+mT + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/media-playlist-shuffle.png b/gtk/icons/16x16/actions/media-playlist-shuffle.png +new file mode 100644 +index 0000000000000000000000000000000000000000..64d03cf7fa0dd16b05d29ae1b94270fcc2374e2f +GIT binary patch +literal 441 +zcmV;q0Y?6bP)0o0aoyZoawPs +zhv4w>{m^Jvz-%)-OK0QVW~cfLKb$&u94=iw4>xaLhX)Vu!E2C@G$23|yUWtm8#Pd> +z=I204wNdOQGto&R9f4di^+tnaHbVW#2O<%T!WXfP{*VVhLnfb?`+{zx$K#>ky+7=^ +zjh{UM2lcZ~R44>1%{Dz8KYavn#{D-(L8KQ^%%B;?sEA|5(U=8;kI`1v)yT)<74y*`UclBg=p~b;eB`)1OZm;rfr|1$|ueog_n|5 +z&sZE<*JRN@!>C|%FiNlcYmhe@Y~H%=?)r_ZVZ)|1vu!&zU)sEN{T>9ye89ZG{P?T} +j-;;@-^uhl{rcd?fKLO%aL~E%700000NkvXXu0mjfy1dNC + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/media-record.png b/gtk/icons/16x16/actions/media-record.png +new file mode 100644 +index 0000000000000000000000000000000000000000..5014fdcd0f81ab1651b18cab6a82f0cf566c4ded +GIT binary patch +literal 419 +zcmV;U0bKrxP)XNsN;2tpOu!s(H%q0Z;fD{GA}$xwm6aembpQSm>B+uj0;)hx!TuWHNXd#BSU` +z{J{f691eIcT)_1C^YFfW3G&;z16DC$HY0fPB4Tnm5()*UB>QwaOkcYO^4od`H*PGZ +zzkTCD8MPXDt(H@gqt~yaQ>o-T*!~Ld-y{F-9g224N+uHuY$w@Uw=l=#CQ;;9*!~Zg +z(}>x;7-tJByncpF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H102_2g +zSaeirbZlh+L1cGfX>?&ANn>wrAXH^-aBN|8WwpEKKL7v#7<5HgbU}4=Xm4@=M@~;o +zMIc0Fb7^O8AXH^xZD5XeegFUfQglUFbVF}&d2(rIXmkKWLm)wPbaH88b#!TOZY@)2 +zVRB_bY-wv{AZT=Sa5^t9V{&C-bZK^FV{dJ3Z*FrgZ*pfZY-wXADg(%U`A_y{C&q^T* +z7nQ4mz)g$V_CVUSvVO;rQ%?hp8dn0Z2NX*4tuVDs}zy3@-9w(Vh +zB7jng;o%Q6i%WBjnM}st^lShh>7AOI?Gt9(;Cnee8Q^*|nT!wc8|@R@J_iWZtpET3 +M07*qoM6N<$f=iKJHvj+t + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/media-seek-backward.png b/gtk/icons/16x16/actions/media-seek-backward.png +new file mode 100644 +index 0000000000000000000000000000000000000000..cd4bfa642035683f101576f82506e9df54fdeb3b +GIT binary patch +literal 332 +zcmV-S0ki&zP)+qP{h{I33!JbU&{Z5!(y(+v?nw12Mv_nG;Lpwqp#u(06u4E&*h +z$%RSd?82n!==eaMo*O5pgnrM#?`Rz!9|)XZnig1&(SZPtj1R#2dbj^$@P&nj8v&i2 +zjfU>N_Fb#pBnhH`3`-$^hMhgF(B0c^dJNvsa7#daQ;liYyhBt~L5g;wBujWU>YJ+d +z$KZ91)prFH7iSyFtBQ9ww$>y?k@0GjlovpGWs&JIctbt}>n +zIcboepYQ(|JTdX1fb*T07->w+NHXp0Y{_v6QRIy9IryV>a5~&W!h(V#qC@vi3B8_! +e|KnbG^*#alobjKk_F!ND00003A%r{gM*`8xVpIn +ztyT-`8>_nV%3__6zP7%qtEws6W~WGTY2H$9ekSJ9r)Q=} +zVR7D4PEH!%gXGkBL@9ymn`@}7E=8&7iIGuJQBFxIaTfX&R8%qa=Q)Uo3PDPhoW>aZ3IcXcPW*qBw^d +P00000NkvXXu0mjfrgW*z + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/media-skip-backward.png b/gtk/icons/16x16/actions/media-skip-backward.png +new file mode 100644 +index 0000000000000000000000000000000000000000..2380d2f6a73c27c44ea69fc805bdaa8e1a886e97 +GIT binary patch +literal 401 +zcmV;C0dD?@P)7O!bfphg3wz67YKF2Tm; +z8pOM_vdFlxrS{_V>_kljg0jjY(%G47$m=&XCCPxol3eWVZ9}|A#s;r0E-!F$dIUo5 +zke!!Ka`Q6>dHtj$2FS`y$KL)9diuI>dwYYU;{#k>UqKv+DY5GQp+4btKOs5x36PwY +zfc1?Ph<8^{$JNcvH6BJ-WDtpr4jJV1DZp6<#KcEperX2c?dRud9G?(;&0Rn@4xBUaX5ftM4 +v_#M!pX=Y(!Vr6SSK#e*|{r~bWd}QAPc|Q0VtpQW300000NkvXXu0mjfdr+nx1p0DvF5{}Kb)VzS8G +z)5T(OOHVkS=St~2nS26r#pDNu@8A{lNp%0=-8w7GX5+hf#-PRk` +z?O}fT>LtJ!f!FWC#-NcmAXADEK@#xp!y8~jzI6Elt=7tJNagFepI^LmfwtINH`aQ82K$Jd5ge8a{sd2u8COEw9d>nV6W^vamEG@DE@x@myz6BZ446XH+u=)_DV` +zCyt}D=W6wt`N=z{P95oX;nbO9JfEHDa=A)^zA|-DsHAv(T`+Lu*n#4qBm1TquLE;% +z=;(psfkS%+xLCS&XJu^x*2T*o7{23w*@YjuzX1fy|5iG8{+|E<002ovPDHLkV1oI& +B-lPBk + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/media-tape.png b/gtk/icons/16x16/actions/media-tape.png +new file mode 100644 +index 0000000000000000000000000000000000000000..319495f513bad1fb3a49dbea053faf8c34f65279 +GIT binary patch +literal 506 +zcmV5sR+e@f*x>K#9I?3dj%*O3bNUEH+oO#9YNvOBM4C +z+@+ma`4~*7A{;cbdywX`UShZB`;PSOJ~}&sXTl3grbr>?%uu4`t|FW +zFk$?#P3#_DNxxu!p!mfaLmIQ^%q18e&gs*qiHVJ4_3BmZ+qV~k*}~Zz>`w-HjrFMWNINXX+=cqn_i?4m#(hu +w%T0_}PfFz%!H5N+NR^+-{|m#<{rkW16N4XtpP>D}IsgCw07*qoM6N<$g8SI=5$dw!w!(Qvg|4X~P~swyoO3+nZH +z#EKG#k<&B{|5~L|@!umUl}b|CG)>t&91dmkX0wq%j2vp{fe@4Yki)rL?oFXkfU<0u +z&*!w=ZfUpM-2-x{p$A(l7K=K&cnyLtd~jP>2W$xnmSq8m +zk;9qX4D*B9hC-pwA`l3?V`yMUaWopyYPCW$>;j09!wpEM==J;kn%C=nBd|Ok&%b0c +zsY3}3Aev66c)|c;YNoPo>(};KkfnPZMARq{f +z$Rb$!^ +zZ+7h1jncZ3K>pTS=?G&i;1rbQU%anu8OO(uAJEz;QA+0u8fy*87(5Xkz4}Pi|I;{b +zf_qQi5h+!O?YeI6s#q|8c78FHOeU8W6XXtSpjM3m!u}#v1NkJBziHu$6M|`jvOr?p=8F@KN@_{zE6lSgqc^eJf|y4ks6hq?g1K +z565*&6E$%hk$co-Z)VMy1Aut)!5KVs;G8fF$6ISF-$nlVWw}h*d-KMv6DT3ATC_Of +zBoZU7HNtNwd-DZy_x}Bpy?Xb^HfY#@-%<9?CHdc$qDk)UdbfJj+AM!S*}H%L{w|;a +ZJ^@$Yb``}C*--!h002ovPDHLkV1jmx|A_zq + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/printer-error.png b/gtk/icons/16x16/actions/printer-error.png +new file mode 100644 +index 0000000000000000000000000000000000000000..457c05587030e3ab5d93ef4e4afe405ff7150375 +GIT binary patch +literal 622 +zcmV-!0+IcRP)QI+$6pE*E^K)_V(0;so{|23%9e;!}l%)=JNr39wDrDtk$Sz;Q +zKfo8xu8weUwug)uhgA)+}_InW4|m4>UiRI~T|1 +z&cWu-f@w!LH&8jRARFs9tmmZ8nS=W>27-dnCoA>}g`k=C59iH8+Jc4CY?DBox=AFN +zAVEe}Dk`hXI9FzWezJ)Pde*Gr(4NjOs;IOxQ&UqW5D1h=5T6)}Q)iEH?x?DOUVD0U +z6c`)hOplC!&hN;{4U>RiBxq@E`d+Yj(I4O7fxP_l?*x7UKHmv02l?UIqD7znfvG9z +zAJ9zu=d))I-j$cn_)g&B<^)%FXO5d}e`Lo0cr<@LIxQ^F7Z3oNpU<5;bWcIy<{`!u +zxL~tbvX3M`vRNQP*1Y*RrKW~k^76Q#tTK2m(%RA0Ofx +z8q*OGstXI-8yo2&BIO<);Taj-6co=44A&MGt#?w8D(MCCY}duO(!6 +z$o?I_A*ZXmdnvVQTFCrpbXul6$b#d_He3NJ5_KRdiEvR6NJZxP{P0b0iV-0^kx+w +QNB{r;07*qoM6N<$f=gPafdBvi + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/system-run.png b/gtk/icons/16x16/actions/system-run.png +new file mode 100644 +index 0000000000000000000000000000000000000000..099cd0c25581b53f6534ad70aa45df47e1f5cb92 +GIT binary patch +literal 305 +zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}LV!<*>;M1%flMIT(9jSO9Uc)K +zHh;m~;*!F3>sA++7Oq{pX8ne>$4?v!4G(s5b_9|@6c!PZlb6-e)q3>kk@M%zJ$(4! +z(W3|N-o5$w@#Ck@pT2+p{^Q4w-@kwV`SbhVzklgW!rdT?OM?7@85kLvHgEs->laA& +z@4tUH>;j#Eas{3)jv*C{seQ~$2Ld=8(v{Eb`LBCC|7lg_D}&FvS2;5m1$=H!vz)FL +z@YO^-(@^;Ifs$vAb$)L`ER0q7A1-6?lKb*lR=!$b>)Q>ouQ&3powZH9bW{4qM{6G( +wzV$P&)%bDWohc8NO$q%O^h9o=JmW8M^~K!R_dVXU3TQWjr>mdKI;Vst0IG(PCIA2c + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/text-x-generic.png b/gtk/icons/16x16/actions/text-x-generic.png +new file mode 100644 +index 0000000000000000000000000000000000000000..47f5c2ec120c0694e9921681a4bffedad3325840 +GIT binary patch +literal 535 +zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJbFq_W2nPqp?T7vkfLzW3kH}&M +z2EHR8%s5q>PZ}sFS>hT|5}cn_Ql40p%1~Zju9umYU7Va)kgAtols@~NjTBIk2uP7* +zX-P(Y5rbD^c4?AAa7k)rUTV>^-{19t@}eMlm(=3qqRfJl%=|ot+|1n6lFEYAV)Kn} +zQ-BH-A-0qjC8siEl#~=$>FZ}@=H@0Q>*bafXC`MP=H%!lS7oL>jsq(03h)VW1=7ck +zt=hbK^X}cd_wQf7Z{PNPyLTMeyZzw)T?hB>Jal09K_J?{YyZBT2S8}YK_Izz2ao~e +z9^Aik-`?%}_wG2jf5-m4+rff6_U+jQWCNvux(@B%c?d`z*nRQB>8qE|zkKoR^{W?e +zUIWpqcW+;R`uO4Vr;lGgfBO36^S7^GL?tIp0=h=JB*-tAfs>10ASgJpxPH>}*KfXk +z|Na9Ae*XIP`}d!E+qk(vWm%psjv*3L=bqWk*PtNaa#4_3N`Nal_0NC)FQE^TV^g+n +z{y4>aa-hT8Sx2%}xD5VIC^_e`AuYLzf8D7@a~=z)V9yR7sonfq?57{xx;9@ZtnvBb +wF7q1wj=DOLFFGD~6MNTx@=@&To}qq-ReZje%X6kAH=wNyp00i_>zopr0LPm6#{d8T + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/tools-check-spelling.png b/gtk/icons/16x16/actions/tools-check-spelling.png +new file mode 100644 +index 0000000000000000000000000000000000000000..466db4607676ef4e2f711de6083b4b4f2ec6c027 +GIT binary patch +literal 507 +zcmV(7O +zrvnC?9crDikq41Z;ImF-wZUNcJi()tYu2ErzdP$JRaQc!Gv56y0pZNq)9{DF*>2dv +zva(Vk?Af;m14DgiZfhZK?P$wXBYAMR4^~Oy+>hRY-dqBO!7$y_){gZX*J5OB5L&YZ +zBjZCD9Uq28DkI0S$x)0?jzDEFVuJsLEtf!Ve7|MeHq1Du2p*pc`wr~IjB6ToO^xI@ +z>z>9emmL)q*t>5xM!rsP?8H&{0&bL5SCc{F?DM-ZJ~d9VFX)Cp=z%}rfye7aMQ!bu +z2|mBGLZ@3y|DQuv>ddC>75)XR^<>GVmS}OZB~o-}!vwhY*d$3;V + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/view-fullscreen.png b/gtk/icons/16x16/actions/view-fullscreen.png +new file mode 100644 +index 0000000000000000000000000000000000000000..c4adae6bee8fd96f869fbc1f85525a2b80f233cd +GIT binary patch +literal 415 +zcmV;Q0bu@#P)oh*{|!XMquApC9gIgk_>QgXkbzB +zYCi|W|3O&MyW@q7d!G<411Q2M0S2NwdRjgECiFb&=xY6sj6q@`IglD-cr{L3`!Jy#TRt6OKt>n}39cI9r +zcd!4W0gxDq0m{Bz|A6>1*b6}0qk$p)3TD8^&mYkBgT&wlD0y{ss`_{B0VOhcAS(KF +z=)(;7^7S(|3^zdDv)z!Pp@9h_8essXe26YKn@Ow;ts_@lC_3^q2_ +z;o{-~uCA`YX0yWX?ha&TrvU;VFD@-WUtbR(Xxnc9o;SVD`Oxz-v(ti-*?a~^M+b0l +zu!nbi7v7hbmjI9b{arwwz;6I_sa{=M!Bz#O`i5GFi;sf9U_XeBi-h)$Rzb;PG5;OF +z`chwH=VZY3^%Zh;8&c8|f#In}hG#zIIQo0Whnm2`_o)++nr;9bPgd;h?Fw!- +zHP>TuElwu>WO%Y}ZhjX2IxxUU8g2kcVa#kc3$aEJMx7lJoY3l3pwZ!}1hrNHDvcbJYWWR-WQ-e!$okRI5yU0L +zfXPI>k3a5oK0uI$gu$T!I5|0n&dzqw5!!}dvVVE_FAesDTB{61a}imOm&@hP{sz$N +zHNV6s#KPg>KAfGMLPlm9s5OdurB?c}Mk9Jvp_YE7P)WPX%1dDhHBn-69LN-6m)`(5 +z<4TpRp`^4(NTk(jg~`bYh(Bne1LNr3tJS=30E=>HH>)006Y@e=(8z>7p8c?D4y +zYHF)~YnaQ+3)CCeXulNh_#J!a;pH|a5{aJt697+<$n`ZZkw*nZo1mq&5hka`VSRlS +zW>I^WSCj(7(ct3lRN~>`@f?=_E8w^3>f!pSo4aF?i>p(=v#aA4nsZJrj-d`N4qu>f +gAHp(!1>D#C6~;N|OUzj~MgRZ+07*qoM6N<$f|7Giod5s; + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/view-restore.png b/gtk/icons/16x16/actions/view-restore.png +new file mode 100644 +index 0000000000000000000000000000000000000000..ecc2d0b47eebdccd573585784471352f7d57c527 +GIT binary patch +literal 338 +zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}MSxF;>;M1%85n@5fuW&6J9Mg= +zZ;zsPn?cN!j-FO|?{;~g4h63^1rXWcQLr?vf3Jd9d*6f}kNm|zhJttd%w4yE3`OsD +zHNSS3>;)ZNtzD}xOy7QU-rjqcub;nh^ZM(zFW +z3-Zq1ec8!qu#_UZkeg->5x{!$ZuH*C(+eMQO3LuXgk9Ce-2=Pf#0=G9Kg>4sY` +z7;C79Y=4ydcz@CVfV;bTYMuI)zji2nz3UunYq4|b3dJP_`Sy9c)te6;e(>;vQHAOS +el@Asj8V<+n_!+mA=kEtv&*16m=d#Wzp$PzG>8?2v@gf&~+W8 +z=Np%xbMJ5)nx=t_NWt>j0vrwp$cRFinVW>&ZUY%n6-LGfVY695MpT8)o;Fx47LXBz +zP}fimv)KeP3N7RV)K1;c_cnT!w=Gk>bMtl*9B0TrZYroOGLEu*`q6Jige +z@t5QoD{D(g&q|d8hLD(?FxB4K3RRUs{{H@uP!vh91<9$2!vU+%+uIwJoD#px&$2Ax +z=jV$A&%Eb*;3~K%Y3pc#Bz=H%6%H7JhmwVitTZoS&VNlE!(2eU+06g|002ovPDHLk +FV1k1Vor?ef + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/view-sort-descending.png b/gtk/icons/16x16/actions/view-sort-descending.png +new file mode 100644 +index 0000000000000000000000000000000000000000..ca6255f50bdfb63bdd55371a42f60656675b1a46 +GIT binary patch +literal 367 +zcmV-#0g(QQP)fvu@A+C+u$BBxH8woz2Uu#9|2(L_yM#{eLg(dgG!|Y$vw~iIpAl}f%qAK +zNhfAYm|2)8+&$QWLZJYu*Xu#b<#LcS3zHR~11_dCFx>n2{PK*I^(9C)v|265<+Vke +zogYhf->pRlEuBqKZ5>Uwt({F3tsPC!Xfz;OI~xlnKJwmt34*F>%Ar=PKyq(=3WADC +z^VvX<;+^R!2ujaNVKYGrcea&~kQ58K{1>En$Hl5b!-Meq`vcM;2YvxQ`1$z)=}-xt +z-tPGN`UL6F6!`J;^BtrkQ=o&7tLsZTP&!nChqp(h^!d)q$30fO`vXDv)L1({WNZKc +N002ovPDHLkV1lJDsLlWY + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/window-close.png b/gtk/icons/16x16/actions/window-close.png +new file mode 100644 +index 0000000000000000000000000000000000000000..603fa3a7dbcf0e26105662331c72e0ed76edf187 +GIT binary patch +literal 337 +zcmV-X0j~auP)Tgm+Lvz`AjAZ=0N%!^XgLb#eXu{a;~Sd3tudzqq`= +zxnW~pZ*gpOcXE4vc!7j}goc5Rkc*U;k(Zj3nw^)Rqn)9oo~Egzs;#E9wy?dxxxT@= +zzQMc7%*oNx(9_e=;^X1uVaB;e1(f +zYSVkc+(W|sE#!Sv01wy(wj)7YDA?NC3Z~OUj(3~@i&g$x_G12S5&S<|!b7jm&f0mkke7t6Syp8n_ +X6t#!r^8FMX00000NkvXXu0mjf$>9y2 + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/zoom-in.png b/gtk/icons/16x16/actions/zoom-in.png +new file mode 100644 +index 0000000000000000000000000000000000000000..ba83a09d8de5d36f9c1c595df91c2eee7793ae6e +GIT binary patch +literal 492 +zcmV$HQ^wR +zV?|NauE65pnp=0TDbI6xp4T9~`t)d!#yt+Mxq0U*A4`^H$#ES0{P~k;*oYzeH|(|N +zFt9kd=E9{jO4GEa{4UqEHEGItO`9>9;4-z(>0n@SaLuukhZM(=K7alw+qN`s;cT@u +zbTF_uxMuHxT?ztUZ{NL<GYjQy)Km(1#E2M8Ys^F10-@4z3wLaZGu2b*1=7 +z-@bj-*RNk%4Gb&}uIb;uS843H(SBuBg}6w9AZRr(uoEVZ4RN`hO}B0xOMUzIF7Ms9 +iXHxU1)&c{IgZmqtXJVRTtU@6G0000z`AjAZ^OpGbaioGVO@E8cD%p1yuZ0&V_$!P +ze1wL9iHwGhkc*FzjFgs;mztEEpPHVbnxUkgrKh8)tEH-~rn0rKw6?Iiy|%r;xxT@= +zzQMcE($Le>(c9eF-QC;Y;N9Zm;pOGy=H}(-=;rF`>Few2?Ck6A?(FaH?(p#M@bK{Q +z@$m8T@bdEV^7HZY^YZlc^Yrxe_4W1k_VxDm_V@Sp_xJbr`1knu`1$$x`T6(^b5p+^cQvfzLHqOq^&(F{G_4oSv`udjYKRW;b0Jup+ +zK~#7FHOVzXgFz4l;5UN1ogod*{Vza+OGSgbLpD1S{lDr7LB=N5F!cNvPBOW%L>S8V +zleSE5FGe<|7oT-vp$5R{3Gl*%uH-+6ul|6|3h0Vv7EE8t-q?N=U^X?Hw)t6F{* +xI$7_~BQ*Y5wBF?M1cu7neI?M?gks44J-d$jX~4bQZ9M=0002ovPDHLkV1lV`B0m5C + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/actions/zoom-out.png b/gtk/icons/16x16/actions/zoom-out.png +new file mode 100644 +index 0000000000000000000000000000000000000000..0ab78bfa6c8a41d95fd2e2e3cfcebf88a8fb70a0 +GIT binary patch +literal 450 +zcmV;z0X_bSP)mv`K^Gf&86mCXyp9 +zUA#iemaNQ#4F{KomOJ2}^7*{JeEHNBxHPo(@9)1bi4&EIWfcp>uE3?CwIB?hzkT~g +zwOUQZVo8NUu`M{bG_>~f`}ftSPM`8#zIv%rsVvv6w*?3H?71_2v^IF~h&!J?zMpgG +s@WDqLH?I%ZZ(OT(;NZT0_jVTTf8p8YppD;r=>Px#07*qoM6N<$f{+c^N&o-= + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/status/audio-volume-high-symbolic.symbolic.png b/gtk/icons/16x16/status/audio-volume-high-symbolic.symbolic.png +new file mode 100644 +index 0000000000000000000000000000000000000000..2797d4953dbea869a8f5aa5911b4a16f60ad9936 +GIT binary patch +literal 297 +zcmV+^0oMMBP)SuFg+gKwFc@4@WjpHtu-jo+GfFv`@%A?f9YTX>D8 +z>dig0gFms68h(j}lwgWI+{SlzzL+|*+A*$!FVP9Usw;TFVek;!!B2GsA6O6m!rB~L +zsV*XsqQbM8XjYVynYx8ZrINP>u+qP}nHj=2qLOp?m`Qpyqn^0X~L?70j{PUARv?^E3U2~_<-1BGNtRWBzi+YnEKRkEg +z)c0@SzkysOgz9pugt1|^DH9%8rB3XLc?f^eb&6=210j&G_Hu>AUxiZE$9)HOe|!4$ +zDd4ee#iCz=L7{4Xe_BO9WPjGYxdEI7OynrlT5U|p1`WaF7Qwyy_Wql{7VoaSvi;#JVj2|ZPzaxfA9u!-q-_{q~I*!?(GdDMvMTA2M+E72CERRUB3dc +ziP7+T@W#lTGNvv;jwxB|6IZ(NAaa^^n{USOUAqZeC+DM9_Kx7>;rU53RQ*-1l)<6H +z2Z0(v`#p$MwOo&`8Hnu1Sg<01wNQW@tz65CE?GbS-!%D9D7}Mep$~Zi&X4Uow}Nj_ +zK&@#UAGlS`~x2YxcB!kNlaN>Rrlq&dyd2u5NFzTh;6O!D<7Hda;^LmI>o-+9gkLX>c>y +zI5@c5IlI=`OarOvE`umlNA+krb@k2E>|2kbbs)QsXI*Ftmyfz5@U>SLnKo95G +zNbJ0a%NXaFtqb&U5q$~=nBX0ARbB^0v}g2diwYcLgbdq}2kWULq;P_p;H&ryzSveE +z$5-%qjDvUE3KX?*_BY-};2KN8$KitVNm~h=Vn6r@E5W}jfh<}dj|sbH%IYg{kFA({ +zt2=nXAs!l>Twy_3i4zQ)EN|kjVeUv-mAh3Sbq7P`e@LN=58O8GJ~e&;(y1w~ad)$A +P00000NkvXXu0mjfF>rz; + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/status/audio-volume-low.png b/gtk/icons/16x16/status/audio-volume-low.png +new file mode 100644 +index 0000000000000000000000000000000000000000..75bb78e9e5ef8123e1f513ecbd93dda56b9003c7 +GIT binary patch +literal 433 +zcmV;i0Z#sjP)fm{r~Fq%l~mn +z(O?4tD%L9i4S0>y0Bd{u|9yRZ|3UPz<46AI~8*ufl17 +zp_%zb7sTl-j3xe&j?jG3CmmP_uZq%_x~ds +zpyt~nqTtp3O5Uf<5~l&BrCAa{&Cjn~yYTnV-#`DW>q}8wpcgUO&oE}%Grid9Vkicb +zROB5lEY1F1TABC#$gzWeUcY|*9|YE{TLCse-m|?}#-~LZ#CFbGve>0ySuTnJxrJH( +zpFDl?A4Grq{`LQ*%a{KD`}gmEO+z`@0Nsd5HKqx(mV?;AjhlVLTDI*%F<|DL8DJYh +z^rJ`j|Ic4E=l_?lU;bz0B!La^uihXV*R}U0h@ISbOek~O@einB5E=Ua%9ShsLG+H@ +zTmLsS*ZzO?`sM$)q-bOVUW3^2U3--?ryjqDVt}>1{r|qczW*Tl*zqI(bMi9(-?@A1 +ze`sXze@Ng>sxnKMy$YOZ?&JBqsHEWE-u=7(JG!}`MdJi>!{}*` +z91`Yp;7mw1Ha1FjE{^XeOzi(>VQULFK--~#2bho^Dtfks5KPKO=H_}PmR6rY-a-~v +qc5hc9Ix`uVm{=Q`TN0g_D8c|!sD1NZL7D0R0000Ic70`}`}?McuCisx7htmmIh&qL3M*Z5{lVU3}&o#drT1?i}0v{ziV$ +zWS*o+bNE8pXDU?l?sQwaQTRzsm_ui_%mbmP`l?&35)F+LIDvj<@O1TaS?83{1OQtQ +BcvAoX + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/status/audio-volume-muted.png b/gtk/icons/16x16/status/audio-volume-muted.png +new file mode 100644 +index 0000000000000000000000000000000000000000..8fdb4cd920ce668203afecf64ce4100ef137a066 +GIT binary patch +literal 545 +zcmV++0^a?JP)K8F`vZP}1o1ME0)Pn~P003_9HfZ%KGL?y8$F2fL9=Spq +zNp2pA2jTHL1)W$Vo{yWiZi4S$zj=k@Cys+*7*yAnp +j*|J0PHtqhenEn+O@@m^^Mt`@s00000NkvXXu0mjfgi{4f + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/status/changes-allow-symbolic.symbolic.png b/gtk/icons/16x16/status/changes-allow-symbolic.symbolic.png +new file mode 100644 +index 0000000000000000000000000000000000000000..b64050770d3012aea88254e1b4e36cd8d50cdee6 +GIT binary patch +literal 177 +zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfyQIa>;9DrJ6^|@sD5Rey3Tfj!S)YI|GqHHJK(Hw>0N1JOVa&6I$iv7jT354 +zrX(bpI&gn^#=YTe?zaQl4{Fan3HW@yl;;8;*L4R~hV-iu5i$Rs%vlk8)a-@PybnFO +z1-%!2`KQi_+{3(^WdV!Wfk4K*12Q*M6s9)ugnr&xmTt$$e(d{)PDkaHi>of&7iH4e +j8RNk5ge&r!|6WG^E*p&ximDYr_cD08`njxgN@xNADl=SP + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/status/dialog-warning-symbolic.symbolic.png b/gtk/icons/16x16/status/dialog-warning-symbolic.symbolic.png +new file mode 100644 +index 0000000000000000000000000000000000000000..df44c9816d66a0dd665629e2fdcaeb625dc7cb06 +GIT binary patch +literal 286 +zcmV+(0pb3MP)4nm2^K*Fv9qwS6fY1Z!7`=j5$rsHjg8oZwDz_( +z-ok(vNRiZO(xekD6emS?VcDH=cVGBm{(R3f!!V?Cf)Bi+_fKCk?+95vw}r0?aKH~v +zo5EepN`ip5rh?l7bc0bg{=<14+{3aU$dk{fb%OiSwabEl>lA!|bpycyyD`B;_2FWI +zfV(n$jPFR}5SNkl750mQmq=4xJ?8KkeiKa>7$o*San!++?dOT5gPp|Q9v-N^e4Cng +kafp6)TAO@f+>)tg1FBSK|9H+{NdN!<07*qoM6N<$f~FpNoB#j- + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/status/document-open-symbolic.symbolic.png b/gtk/icons/16x16/status/document-open-symbolic.symbolic.png +new file mode 100644 +index 0000000000000000000000000000000000000000..a3f259da410916445948d844876d765880256308 +GIT binary patch +literal 194 +zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf@dFn52GL)}o`(;r +z8)Pyr{mZjS#kstJVdJGnF#)54DrZ05;+P=8maxlfve$aXfV$0Idl{;i{5Sr=vf=kG +p)f1u#UtHe`d){kU`1f6$c__-MmPWf + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/status/edit-clear-symbolic.symbolic.png b/gtk/icons/16x16/status/edit-clear-symbolic.symbolic.png +new file mode 100644 +index 0000000000000000000000000000000000000000..b5db5186f7f7c9cf5a12d4e818b4df680aa7fbf6 +GIT binary patch +literal 238 +zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf**C7W1mJ96)PuRC?+rZJWXm6|hvicRhx1u9Bl9nf==jav8Gwkf$VX$GhL9uc9 +zar-d&Y!Tia$)T?Iwku5EvGmDZ@h43E%O)rG8S6!~-0gOl`!-Oa$B?sj9#>A5j+|jn +z5??_FtJO552t74w-~pS8br*SsN{g2mpo1n( +z<9!+aeNk~gQ+!_XgKh@0)6OW2K}Cx&jJ&73u?VA612~JkdEQus(X0WqBJVf*@c`cu +zpVRS;u%$om=1LL(GAOqI +O0000C&>S&!6#0|z*kerz+b`zx}$K|sQn{fj|E641~OtRkjWd;5Xf7(8A5 +KT-G@yGywqpyB|sb + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/status/list-remove-symbolic.symbolic.png b/gtk/icons/16x16/status/list-remove-symbolic.symbolic.png +new file mode 100644 +index 0000000000000000000000000000000000000000..5dd2f10972561c2c0c4e6cb5a3c10d06dd6ca8d2 +GIT binary patch +literal 100 +zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfzopr0KbhJ +Awg3PC + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/status/pan-down-symbolic.symbolic.png b/gtk/icons/16x16/status/pan-down-symbolic.symbolic.png +new file mode 100644 +index 0000000000000000000000000000000000000000..feebd469f1b5040459816df1b0f7e9bdf7de2822 +GIT binary patch +literal 135 +zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfF#IEGmC +zp1rh@lR-hi`QrNS?3c%;rK@&i6uKSZ`M{y_A(?4H$N`Zh%xo#51`Ad+NJlb8t5`i) +rWm2GP#Qe_E{lN?F@IIB;pSe=c_2p|dP2Rf#O=a+O^>bP0l+XkK2YoDn + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/status/pan-start-symbolic.symbolic.png b/gtk/icons/16x16/status/pan-start-symbolic.symbolic.png +new file mode 100644 +index 0000000000000000000000000000000000000000..371cefed8abd813f5a2f29e0deb4499f695b409d +GIT binary patch +literal 140 +zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf`lWLuDZER#W)k9ptZBx$_>zaDOmMm8^A2eXzO +j=7hF@6oxYs961;|X36{id-2r;XdHv5tDnm{r-UW|Z^|e0 + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/status/pan-up-symbolic.symbolic.png b/gtk/icons/16x16/status/pan-up-symbolic.symbolic.png +new file mode 100644 +index 0000000000000000000000000000000000000000..b39e16acd8ee62eec200971aca622cf599729384 +GIT binary patch +literal 122 +zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfMT2{p}@$%@UKAmgYEs! +QcRzopr05ww}3jhEB + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/status/user-trash-full-symbolic.symbolic.png b/gtk/icons/16x16/status/user-trash-full-symbolic.symbolic.png +new file mode 100644 +index 0000000000000000000000000000000000000000..cdfe11584a2144dc45a6570553f77a9ab6d4ea77 +GIT binary patch +literal 357 +zcmV-r0h<1aP)Eb0Z1wN)#jw~q-T%;e#8Ud5BLg!39}&yWYp8wxX1#1@q}VJ1jfLJ +z-e{YifwE^%2A;%sh(_Su=AffkQfvW-p1}d|Ail5oY7Z~e!nN`}pet@?@B-|L-$;LM +z23thEzp)y+(&yabJ@L2DUv=L#4?HseR~D^_ba{Y(J8xSv3$t{p00000NkvXXu0mjf +DF(#E~ + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/status/user-trash-symbolic.symbolic.png b/gtk/icons/16x16/status/user-trash-symbolic.symbolic.png +new file mode 100644 +index 0000000000000000000000000000000000000000..8f12ce9ce17e643931a2dddb64a2152931dc16db +GIT binary patch +literal 164 +zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf%4@9?%*FPgg&e +IbxsLQ07+>xl>h($ + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/status/window-close-symbolic.symbolic.png b/gtk/icons/16x16/status/window-close-symbolic.symbolic.png +new file mode 100644 +index 0000000000000000000000000000000000000000..db9f61b481f25aed70552476b32cb217163d1f62 +GIT binary patch +literal 195 +zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf9 +zf_|q=Iu@wH`ao4&r->_KO3H)^)~s%YsV)i3vz8xw<66M9dzXBXk43_>f5ibCH*@?- +oIiT6Oonw*5m+Zc3VS7&TNv5h%l{J31fUaQhboFyt=akR{0Li{Vr~m)} + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/status/window-maximize-symbolic.symbolic.png b/gtk/icons/16x16/status/window-maximize-symbolic.symbolic.png +new file mode 100644 +index 0000000000000000000000000000000000000000..c66b18c56bcf20f60c88fa9ddbb96cec028fbcb4 +GIT binary patch +literal 149 +zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfS@2{-L{LeAA`Md)g8{46OsvK>CCHaH--UH2L@O1TaS?83{1OSNbEQ|mE + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/16x16/status/window-minimize-symbolic.symbolic.png b/gtk/icons/16x16/status/window-minimize-symbolic.symbolic.png +new file mode 100644 +index 0000000000000000000000000000000000000000..c1f38b7532d920eea5e74d8703392033bba9bb6b +GIT binary patch +literal 104 +zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf683a)46*1< +xPLN<-oM6DRX`Z3Ds1S<<8H{;=tR`a#= +j4v6;dIKsIrLxqVU*MnWK$CEJ-XdHv5tDnm{r-UW|XF4Y& + +literal 0 +HcmV?d00001 + +diff --git a/gtk/icons/scalable/status/audio-volume-high-symbolic.svg b/gtk/icons/scalable/status/audio-volume-high-symbolic.svg +new file mode 100644 +index 0000000000..703d9a7cb6 +--- /dev/null ++++ b/gtk/icons/scalable/status/audio-volume-high-symbolic.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/gtk/icons/scalable/status/audio-volume-low-symbolic.svg b/gtk/icons/scalable/status/audio-volume-low-symbolic.svg +new file mode 100644 +index 0000000000..0924c71e70 +--- /dev/null ++++ b/gtk/icons/scalable/status/audio-volume-low-symbolic.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/gtk/icons/scalable/status/audio-volume-medium-symbolic.svg b/gtk/icons/scalable/status/audio-volume-medium-symbolic.svg +new file mode 100644 +index 0000000000..d18794ab91 +--- /dev/null ++++ b/gtk/icons/scalable/status/audio-volume-medium-symbolic.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/gtk/icons/scalable/status/audio-volume-muted-symbolic.svg b/gtk/icons/scalable/status/audio-volume-muted-symbolic.svg +new file mode 100644 +index 0000000000..1d9e6a418b +--- /dev/null ++++ b/gtk/icons/scalable/status/audio-volume-muted-symbolic.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/gtk/icons/scalable/status/changes-allow-symbolic.svg b/gtk/icons/scalable/status/changes-allow-symbolic.svg +new file mode 100644 +index 0000000000..374103710a +--- /dev/null ++++ b/gtk/icons/scalable/status/changes-allow-symbolic.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/gtk/icons/scalable/status/changes-prevent-symbolic.svg b/gtk/icons/scalable/status/changes-prevent-symbolic.svg +new file mode 100644 +index 0000000000..132b656be6 +--- /dev/null ++++ b/gtk/icons/scalable/status/changes-prevent-symbolic.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/gtk/icons/scalable/status/dialog-password-symbolic.svg b/gtk/icons/scalable/status/dialog-password-symbolic.svg +new file mode 100644 +index 0000000000..100a80a2d0 +--- /dev/null ++++ b/gtk/icons/scalable/status/dialog-password-symbolic.svg +@@ -0,0 +1,7 @@ ++ ++ ++ ++ ++ ++ ++ +diff --git a/gtk/icons/scalable/status/dialog-warning-symbolic.svg b/gtk/icons/scalable/status/dialog-warning-symbolic.svg +new file mode 100644 +index 0000000000..dff0822c2b +--- /dev/null ++++ b/gtk/icons/scalable/status/dialog-warning-symbolic.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/gtk/icons/scalable/status/document-open-symbolic.svg b/gtk/icons/scalable/status/document-open-symbolic.svg +new file mode 100644 +index 0000000000..faca97c76e +--- /dev/null ++++ b/gtk/icons/scalable/status/document-open-symbolic.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/gtk/icons/scalable/status/edit-clear-symbolic.svg b/gtk/icons/scalable/status/edit-clear-symbolic.svg +new file mode 100644 +index 0000000000..a252196442 +--- /dev/null ++++ b/gtk/icons/scalable/status/edit-clear-symbolic.svg +@@ -0,0 +1,4 @@ ++ ++ ++ ++ +diff --git a/gtk/icons/scalable/status/edit-find-symbolic.svg b/gtk/icons/scalable/status/edit-find-symbolic.svg +new file mode 100644 +index 0000000000..2a3770eef0 +--- /dev/null ++++ b/gtk/icons/scalable/status/edit-find-symbolic.svg +@@ -0,0 +1,7 @@ ++ ++ ++ ++ ++ ++ ++ +diff --git a/gtk/icons/scalable/status/list-add-symbolic.svg b/gtk/icons/scalable/status/list-add-symbolic.svg +new file mode 100644 +index 0000000000..cf6862242e +--- /dev/null ++++ b/gtk/icons/scalable/status/list-add-symbolic.svg +@@ -0,0 +1,4 @@ ++ ++ ++ ++ +diff --git a/gtk/icons/scalable/status/list-remove-symbolic.svg b/gtk/icons/scalable/status/list-remove-symbolic.svg +new file mode 100644 +index 0000000000..b20ba0b709 +--- /dev/null ++++ b/gtk/icons/scalable/status/list-remove-symbolic.svg +@@ -0,0 +1,4 @@ ++ ++ ++ ++ +diff --git a/gtk/icons/scalable/status/open-menu-symbolic.svg b/gtk/icons/scalable/status/open-menu-symbolic.svg +new file mode 100644 +index 0000000000..7f4474335d +--- /dev/null ++++ b/gtk/icons/scalable/status/open-menu-symbolic.svg +@@ -0,0 +1,8 @@ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/gtk/icons/scalable/status/pan-down-symbolic.svg b/gtk/icons/scalable/status/pan-down-symbolic.svg +new file mode 100644 +index 0000000000..5d3c5ea1ad +--- /dev/null ++++ b/gtk/icons/scalable/status/pan-down-symbolic.svg +@@ -0,0 +1,41 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ image/svg+xml ++ ++ Gnome Symbolic Icons ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Gnome Symbolic Icons ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/gtk/icons/scalable/status/pan-end-symbolic.svg b/gtk/icons/scalable/status/pan-end-symbolic.svg +new file mode 100644 +index 0000000000..c0a42f07b3 +--- /dev/null ++++ b/gtk/icons/scalable/status/pan-end-symbolic.svg +@@ -0,0 +1,41 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ image/svg+xml ++ ++ Gnome Symbolic Icons ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Gnome Symbolic Icons ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/gtk/icons/scalable/status/pan-start-symbolic.svg b/gtk/icons/scalable/status/pan-start-symbolic.svg +new file mode 100644 +index 0000000000..7f8a80d786 +--- /dev/null ++++ b/gtk/icons/scalable/status/pan-start-symbolic.svg +@@ -0,0 +1,41 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ image/svg+xml ++ ++ Gnome Symbolic Icons ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Gnome Symbolic Icons ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/gtk/icons/scalable/status/pan-up-symbolic.svg b/gtk/icons/scalable/status/pan-up-symbolic.svg +new file mode 100644 +index 0000000000..f8d605a6a3 +--- /dev/null ++++ b/gtk/icons/scalable/status/pan-up-symbolic.svg +@@ -0,0 +1,41 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ image/svg+xml ++ ++ Gnome Symbolic Icons ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Gnome Symbolic Icons ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/gtk/icons/scalable/status/user-trash-full-symbolic.svg b/gtk/icons/scalable/status/user-trash-full-symbolic.svg +new file mode 100644 +index 0000000000..fe5ded209c +--- /dev/null ++++ b/gtk/icons/scalable/status/user-trash-full-symbolic.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/gtk/icons/scalable/status/user-trash-symbolic.svg b/gtk/icons/scalable/status/user-trash-symbolic.svg +new file mode 100644 +index 0000000000..734827ec63 +--- /dev/null ++++ b/gtk/icons/scalable/status/user-trash-symbolic.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/gtk/icons/scalable/status/window-close-symbolic.svg b/gtk/icons/scalable/status/window-close-symbolic.svg +new file mode 100644 +index 0000000000..8efbba5837 +--- /dev/null ++++ b/gtk/icons/scalable/status/window-close-symbolic.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/gtk/icons/scalable/status/window-maximize-symbolic.svg b/gtk/icons/scalable/status/window-maximize-symbolic.svg +new file mode 100644 +index 0000000000..a017fe37a2 +--- /dev/null ++++ b/gtk/icons/scalable/status/window-maximize-symbolic.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/gtk/icons/scalable/status/window-minimize-symbolic.svg b/gtk/icons/scalable/status/window-minimize-symbolic.svg +new file mode 100644 +index 0000000000..29f419fd58 +--- /dev/null ++++ b/gtk/icons/scalable/status/window-minimize-symbolic.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/gtk/icons/scalable/status/window-restore-symbolic.svg b/gtk/icons/scalable/status/window-restore-symbolic.svg +new file mode 100644 +index 0000000000..92cb9911c9 +--- /dev/null ++++ b/gtk/icons/scalable/status/window-restore-symbolic.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +-- +GitLab + diff --git a/patches/gvfs-1.50.0-upstreamfix.patch b/patches/gvfs-1.50.0-upstreamfix.patch deleted file mode 100644 index e06a622..0000000 --- a/patches/gvfs-1.50.0-upstreamfix.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 747c7f6ea6c8b6a7ccd008bb47996ba7eb169bcc Mon Sep 17 00:00:00 2001 -From: Ondrej Holy -Date: Mon, 11 Apr 2022 10:54:04 +0200 -Subject: [PATCH] smb: Ignore EINVAL for kerberos/ccache login - -With samba 4.16.0, mount operation fails with the "Invalid Argument" error -when kerberos/ccache is misconfigured. Ignore this error, so user get a chance -to login using the password... - -Fixes: https://gitlab.gnome.org/GNOME/gvfs/-/issues/611 ---- - daemon/gvfsbackendsmb.c | 8 +++++++- - daemon/gvfsbackendsmbbrowse.c | 10 ++++++++-- - 2 files changed, 15 insertions(+), 3 deletions(-) - -diff --git a/daemon/gvfsbackendsmb.c b/daemon/gvfsbackendsmb.c -index 33d1a209..776b67bc 100644 ---- a/daemon/gvfsbackendsmb.c -+++ b/daemon/gvfsbackendsmb.c -@@ -513,7 +513,13 @@ do_mount (GVfsBackend *backend, - if (res == 0) - break; - -- if (op_backend->mount_cancelled || (errsv != EACCES && errsv != EPERM)) -+ if (errsv == EINVAL && op_backend->mount_try <= 1 && op_backend->user == NULL) -+ { -+ /* EINVAL is "expected" when kerberos/ccache is misconfigured, see: -+ * https://gitlab.gnome.org/GNOME/gvfs/-/issues/611 -+ */ -+ } -+ else if (op_backend->mount_cancelled || (errsv != EACCES && errsv != EPERM)) - { - g_debug ("do_mount - (errno != EPERM && errno != EACCES), cancelled = %d, breaking\n", op_backend->mount_cancelled); - break; -diff --git a/daemon/gvfsbackendsmbbrowse.c b/daemon/gvfsbackendsmbbrowse.c -index 57bae9db..7e8facfb 100644 ---- a/daemon/gvfsbackendsmbbrowse.c -+++ b/daemon/gvfsbackendsmbbrowse.c -@@ -967,8 +967,14 @@ do_mount (GVfsBackend *backend, - uri, op_backend->mount_try, dir, op_backend->mount_cancelled, - errsv, g_strerror (errsv)); - -- if (dir == NULL && -- (op_backend->mount_cancelled || (errsv != EPERM && errsv != EACCES))) -+ if (errsv == EINVAL && op_backend->mount_try == 0 && op_backend->user == NULL) -+ { -+ /* EINVAL is "expected" when kerberos is misconfigured, see: -+ * https://gitlab.gnome.org/GNOME/gvfs/-/issues/611 -+ */ -+ } -+ else if (dir == NULL && -+ (op_backend->mount_cancelled || (errsv != EPERM && errsv != EACCES))) - { - g_debug ("do_mount - (errno != EPERM && errno != EACCES), cancelled = %d, breaking\n", op_backend->mount_cancelled); - break; --- -GitLab - diff --git a/patches/mesa-21.3.3-xdemos.patch b/patches/mesa-21.3.3-xdemos.patch deleted file mode 100644 index 8abf45d..0000000 --- a/patches/mesa-21.3.3-xdemos.patch +++ /dev/null @@ -1,3352 +0,0 @@ -diff -aruN old/src/glx/meson.build new/src/glx/meson.build ---- old/src/glx/meson.build 2021-12-29 21:05:19.000000000 +0000 -+++ new/src/glx/meson.build 2021-12-31 12:15:26.358443305 +0000 -@@ -156,6 +156,8 @@ - install : true, - ) - -+subdir('xdemos') -+ - if with_tests - subdir('tests') - endif -diff -aruN old/src/glx/meson.build.orig new/src/glx/meson.build.orig ---- old/src/glx/meson.build.orig 1970-01-01 01:00:00.000000000 +0100 -+++ new/src/glx/meson.build.orig 2021-12-29 21:05:19.000000000 +0000 -@@ -0,0 +1,161 @@ -+# Copyright © 2017-2019 Intel Corporation -+ -+# Permission is hereby granted, free of charge, to any person obtaining a copy -+# of this software and associated documentation files (the "Software"), to deal -+# in the Software without restriction, including without limitation the rights -+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+# copies of the Software, and to permit persons to whom the Software is -+# furnished to do so, subject to the following conditions: -+ -+# The above copyright notice and this permission notice shall be included in -+# all copies or substantial portions of the Software. -+ -+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -+# SOFTWARE. -+ -+inc_glx = include_directories('.') -+ -+subdir('apple') -+if with_dri_platform == 'windows' -+ subdir('windows') -+endif -+ -+files_libglx = files( -+ 'clientattrib.c', -+ 'clientinfo.c', -+ 'compsize.c', -+ 'create_context.c', -+ 'dri_common.c', -+ 'dri_common.h', -+ 'dri_common_query_renderer.c', -+ 'dri_common_interop.c', -+ 'drisw_glx.c', -+ 'drisw_priv.h', -+ 'eval.c', -+ 'glxclient.h', -+ 'glxcmds.c', -+ 'glxconfig.c', -+ 'glxconfig.h', -+ 'glxcurrent.c', -+ 'glx_error.c', -+ 'glx_error.h', -+ 'glxext.c', -+ 'glxextensions.c', -+ 'glxextensions.h', -+ 'glxhash.c', -+ 'glxhash.h', -+ 'glx_pbuffer.c', -+ 'glx_query.c', -+ 'indirect_glx.c', -+ 'indirect_init.h', -+ 'indirect_texture_compression.c', -+ 'indirect_transpose_matrix.c', -+ 'indirect_vertex_array.c', -+ 'indirect_vertex_array.h', -+ 'indirect_vertex_array_priv.h', -+ 'indirect_vertex_program.c', -+ 'indirect_window_pos.c', -+ 'packrender.h', -+ 'packsingle.h', -+ 'pixel.c', -+ 'pixelstore.c', -+ 'query_renderer.c', -+ 'render2.c', -+ 'renderpix.c', -+ 'single2.c', -+ 'singlepix.c', -+ 'vertarr.c', -+ 'xfont.c', -+) -+ -+extra_libs_libglx = [] -+extra_deps_libgl = [] -+extra_ld_args_libgl = [] -+ -+# dri2 -+if with_dri_platform == 'drm' and dep_libdrm.found() -+ files_libglx += files( -+ 'dri2.c', -+ 'dri2_glx.c', -+ 'dri2.h', -+ 'dri2_priv.h', -+ ) -+endif -+ -+if with_dri3 -+ files_libglx += files('dri3_glx.c', 'dri3_priv.h') -+endif -+ -+if with_dri_platform == 'apple' -+ files_libglx += files('applegl_glx.c') -+ extra_libs_libglx += libappleglx -+elif with_dri_platform == 'windows' -+ files_libglx += files('driwindows_glx.c') -+ extra_libs_libglx += [ -+ libwindowsdri, -+ libwindowsglx, -+ ] -+ extra_deps_libgl = [ -+ meson.get_compiler('c').find_library('gdi32'), -+ meson.get_compiler('c').find_library('opengl32') -+ ] -+ extra_ld_args_libgl = '-Wl,--disable-stdcall-fixup' -+endif -+ -+if not with_glvnd -+ gl_lib_name = 'GL' -+ gl_lib_version = '1.2.0' -+else -+ gl_lib_name = 'GLX_@0@'.format(glvnd_vendor_name) -+ gl_lib_version = '0.0.0' -+ files_libglx += files( -+ 'g_glxglvnddispatchfuncs.c', -+ 'g_glxglvnddispatchindices.h', -+ 'glxglvnd.c', -+ 'glxglvnd.h', -+ 'glxglvnddispatchfuncs.h', -+ ) -+endif -+ -+libglx = static_library( -+ 'glx', -+ [files_libglx, glx_generated], -+ include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_glapi, inc_loader], -+ c_args : [ -+ '-DGL_LIB_NAME="lib@0@.so.@1@"'.format(gl_lib_name, gl_lib_version.split('.')[0]), -+ ], -+ gnu_symbol_visibility : 'hidden', -+ link_with : [ -+ libloader, libloader_dri3_helper, -+ extra_libs_libglx, -+ ], -+ dependencies : [ -+ idep_mesautil, idep_xmlconfig, -+ dep_libdrm, dep_dri2proto, dep_glproto, dep_x11, dep_glvnd, -+ ], -+) -+ -+libgl = shared_library( -+ gl_lib_name, -+ [], -+ link_with : [libglapi_static, libglapi], -+ link_whole : libglx, -+ link_args : [ld_args_bsymbolic, ld_args_gc_sections, extra_ld_args_libgl], -+ dependencies : [ -+ dep_libdrm, dep_dl, dep_m, dep_thread, dep_x11, dep_xcb_glx, dep_xcb, -+ dep_x11_xcb, dep_xcb_dri2, dep_xext, dep_xfixes, dep_xxf86vm, -+ dep_xcb_shm, extra_deps_libgl, -+ ], -+ version : gl_lib_version, -+ darwin_versions : '4.0.0', -+ install : true, -+) -+ -+if with_tests -+ subdir('tests') -+endif -diff -aruN old/src/glx/xdemos/glinfo_common.c new/src/glx/xdemos/glinfo_common.c ---- old/src/glx/xdemos/glinfo_common.c 1970-01-01 01:00:00.000000000 +0100 -+++ new/src/glx/xdemos/glinfo_common.c 2021-12-31 12:15:26.361776512 +0000 -@@ -0,0 +1,800 @@ -+/* -+ * Copyright (C) 1999-2014 Brian Paul All Rights Reserved. -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, including without limitation -+ * the rights to use, copy, modify, merge, publish, distribute, sublicense, -+ * and/or sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included -+ * in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include "glinfo_common.h" -+ -+#ifdef _WIN32 -+#define snprintf _snprintf -+#endif -+ -+ -+/** -+ * Return the GL enum name for a numeric value. -+ * We really only care about the compressed texture formats for now. -+ */ -+static const char * -+enum_name(GLenum val) -+{ -+ static const struct { -+ const char *name; -+ GLenum val; -+ } enums [] = { -+ { "GL_COMPRESSED_ALPHA", 0x84E9 }, -+ { "GL_COMPRESSED_LUMINANCE", 0x84EA }, -+ { "GL_COMPRESSED_LUMINANCE_ALPHA", 0x84EB }, -+ { "GL_COMPRESSED_INTENSITY", 0x84EC }, -+ { "GL_COMPRESSED_RGB", 0x84ED }, -+ { "GL_COMPRESSED_RGBA", 0x84EE }, -+ { "GL_COMPRESSED_TEXTURE_FORMATS", 0x86A3 }, -+ { "GL_COMPRESSED_RGB", 0x84ED }, -+ { "GL_COMPRESSED_RGBA", 0x84EE }, -+ { "GL_COMPRESSED_TEXTURE_FORMATS", 0x86A3 }, -+ { "GL_COMPRESSED_ALPHA", 0x84E9 }, -+ { "GL_COMPRESSED_LUMINANCE", 0x84EA }, -+ { "GL_COMPRESSED_LUMINANCE_ALPHA", 0x84EB }, -+ { "GL_COMPRESSED_INTENSITY", 0x84EC }, -+ { "GL_COMPRESSED_SRGB", 0x8C48 }, -+ { "GL_COMPRESSED_SRGB_ALPHA", 0x8C49 }, -+ { "GL_COMPRESSED_SLUMINANCE", 0x8C4A }, -+ { "GL_COMPRESSED_SLUMINANCE_ALPHA", 0x8C4B }, -+ { "GL_COMPRESSED_RED", 0x8225 }, -+ { "GL_COMPRESSED_RG", 0x8226 }, -+ { "GL_COMPRESSED_RED_RGTC1", 0x8DBB }, -+ { "GL_COMPRESSED_SIGNED_RED_RGTC1", 0x8DBC }, -+ { "GL_COMPRESSED_RG_RGTC2", 0x8DBD }, -+ { "GL_COMPRESSED_SIGNED_RG_RGTC2", 0x8DBE }, -+ { "GL_COMPRESSED_RGB8_ETC2", 0x9274 }, -+ { "GL_COMPRESSED_SRGB8_ETC2", 0x9275 }, -+ { "GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", 0x9276 }, -+ { "GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2", 0x9277 }, -+ { "GL_COMPRESSED_RGBA8_ETC2_EAC", 0x9278 }, -+ { "GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC", 0x9279 }, -+ { "GL_COMPRESSED_R11_EAC", 0x9270 }, -+ { "GL_COMPRESSED_SIGNED_R11_EAC", 0x9271 }, -+ { "GL_COMPRESSED_RG11_EAC", 0x9272 }, -+ { "GL_COMPRESSED_SIGNED_RG11_EAC", 0x9273 }, -+ { "GL_COMPRESSED_ALPHA_ARB", 0x84E9 }, -+ { "GL_COMPRESSED_LUMINANCE_ARB", 0x84EA }, -+ { "GL_COMPRESSED_LUMINANCE_ALPHA_ARB", 0x84EB }, -+ { "GL_COMPRESSED_INTENSITY_ARB", 0x84EC }, -+ { "GL_COMPRESSED_RGB_ARB", 0x84ED }, -+ { "GL_COMPRESSED_RGBA_ARB", 0x84EE }, -+ { "GL_COMPRESSED_TEXTURE_FORMATS_ARB", 0x86A3 }, -+ { "GL_COMPRESSED_RGBA_BPTC_UNORM_ARB", 0x8E8C }, -+ { "GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB", 0x8E8D }, -+ { "GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB", 0x8E8E }, -+ { "GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB", 0x8E8F }, -+ { "GL_COMPRESSED_RGBA_ASTC_4x4_KHR", 0x93B0 }, -+ { "GL_COMPRESSED_RGBA_ASTC_5x4_KHR", 0x93B1 }, -+ { "GL_COMPRESSED_RGBA_ASTC_5x5_KHR", 0x93B2 }, -+ { "GL_COMPRESSED_RGBA_ASTC_6x5_KHR", 0x93B3 }, -+ { "GL_COMPRESSED_RGBA_ASTC_6x6_KHR", 0x93B4 }, -+ { "GL_COMPRESSED_RGBA_ASTC_8x5_KHR", 0x93B5 }, -+ { "GL_COMPRESSED_RGBA_ASTC_8x6_KHR", 0x93B6 }, -+ { "GL_COMPRESSED_RGBA_ASTC_8x8_KHR", 0x93B7 }, -+ { "GL_COMPRESSED_RGBA_ASTC_10x5_KHR", 0x93B8 }, -+ { "GL_COMPRESSED_RGBA_ASTC_10x6_KHR", 0x93B9 }, -+ { "GL_COMPRESSED_RGBA_ASTC_10x8_KHR", 0x93BA }, -+ { "GL_COMPRESSED_RGBA_ASTC_10x10_KHR", 0x93BB }, -+ { "GL_COMPRESSED_RGBA_ASTC_12x10_KHR", 0x93BC }, -+ { "GL_COMPRESSED_RGBA_ASTC_12x12_KHR", 0x93BD }, -+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR", 0x93D0 }, -+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR", 0x93D1 }, -+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR", 0x93D2 }, -+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR", 0x93D3 }, -+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR", 0x93D4 }, -+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR", 0x93D5 }, -+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR", 0x93D6 }, -+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR", 0x93D7 }, -+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR", 0x93D8 }, -+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR", 0x93D9 }, -+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR", 0x93DA }, -+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR", 0x93DB }, -+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR", 0x93DC }, -+ { "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR", 0x93DD }, -+ { "GL_COMPRESSED_RGB_FXT1_3DFX", 0x86B0 }, -+ { "GL_COMPRESSED_RGBA_FXT1_3DFX", 0x86B1 }, -+ { "GL_COMPRESSED_LUMINANCE_LATC1_EXT", 0x8C70 }, -+ { "GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT", 0x8C71 }, -+ { "GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT", 0x8C72 }, -+ { "GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT", 0x8C73 }, -+ { "GL_COMPRESSED_RED_RGTC1_EXT", 0x8DBB }, -+ { "GL_COMPRESSED_SIGNED_RED_RGTC1_EXT", 0x8DBC }, -+ { "GL_COMPRESSED_RED_GREEN_RGTC2_EXT", 0x8DBD }, -+ { "GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT", 0x8DBE }, -+ { "GL_COMPRESSED_RGB_S3TC_DXT1_EXT", 0x83F0 }, -+ { "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT", 0x83F1 }, -+ { "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT", 0x83F2 }, -+ { "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT", 0x83F3 }, -+ { "GL_COMPRESSED_SRGB_EXT", 0x8C48 }, -+ { "GL_COMPRESSED_SRGB_ALPHA_EXT", 0x8C49 }, -+ { "GL_COMPRESSED_SLUMINANCE_EXT", 0x8C4A }, -+ { "GL_COMPRESSED_SLUMINANCE_ALPHA_EXT", 0x8C4B }, -+ { "GL_COMPRESSED_SRGB_S3TC_DXT1_EXT", 0x8C4C }, -+ { "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT", 0x8C4D }, -+ { "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT", 0x8C4E }, -+ { "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT", 0x8C4F }, -+ { "GL_PALETTE4_RGB8_OES", 0x8B90 }, -+ { "GL_PALETTE4_RGBA8_OES", 0x8B91 }, -+ { "GL_PALETTE4_R5_G6_B5_OES", 0x8B92 }, -+ { "GL_PALETTE4_RGBA4_OES", 0x8B93 }, -+ { "GL_PALETTE4_RGB5_A1_OES", 0x8B94 }, -+ { "GL_PALETTE8_RGB8_OES", 0x8B95 }, -+ { "GL_PALETTE8_RGBA8_OES", 0x8B96 }, -+ { "GL_PALETTE8_R5_G6_B5_OES", 0x8B97 }, -+ { "GL_PALETTE8_RGBA4_OES", 0x8B98 }, -+ { "GL_PALETTE8_RGB5_A1_OES", 0x8B99 } -+ }; -+ const int n = sizeof(enums) / sizeof(enums[0]); -+ static char buffer[100]; -+ int i; -+ for (i = 0; i < n; i++) { -+ if (enums[i].val == val) { -+ return enums[i].name; -+ } -+ } -+ /* enum val not found, just print hexadecimal value into static buffer */ -+ snprintf(buffer, sizeof(buffer), "0x%x", val); -+ return buffer; -+} -+ -+ -+/* -+ * qsort callback for string comparison. -+ */ -+static int -+compare_string_ptr(const void *p1, const void *p2) -+{ -+ return strcmp(* (char * const *) p1, * (char * const *) p2); -+} -+ -+/* -+ * Print a list of extensions, with word-wrapping. -+ */ -+void -+print_extension_list(const char *ext, GLboolean singleLine) -+{ -+ char **extensions; -+ int num_extensions; -+ const char *indentString = " "; -+ const int indent = 4; -+ const int max = 79; -+ int width, i, j, k; -+ -+ if (!ext || !ext[0]) -+ return; -+ -+ /* count the number of extensions, ignoring successive spaces */ -+ num_extensions = 0; -+ j = 1; -+ do { -+ if ((ext[j] == ' ' || ext[j] == 0) && ext[j - 1] != ' ') { -+ ++num_extensions; -+ } -+ } while(ext[j++]); -+ -+ /* copy individual extensions to an array */ -+ extensions = malloc(num_extensions * sizeof *extensions); -+ if (!extensions) { -+ fprintf(stderr, "Error: malloc() failed\n"); -+ exit(1); -+ } -+ i = j = k = 0; -+ while (1) { -+ if (ext[j] == ' ' || ext[j] == 0) { -+ /* found end of an extension name */ -+ const int len = j - i; -+ -+ if (len) { -+ assert(k < num_extensions); -+ -+ extensions[k] = malloc(len + 1); -+ if (!extensions[k]) { -+ fprintf(stderr, "Error: malloc() failed\n"); -+ exit(1); -+ } -+ -+ memcpy(extensions[k], ext + i, len); -+ extensions[k][len] = 0; -+ -+ ++k; -+ }; -+ -+ i += len + 1; -+ -+ if (ext[j] == 0) { -+ break; -+ } -+ } -+ j++; -+ } -+ assert(k == num_extensions); -+ -+ /* sort extensions alphabetically */ -+ qsort(extensions, num_extensions, sizeof extensions[0], compare_string_ptr); -+ -+ /* print the extensions */ -+ width = indent; -+ printf("%s", indentString); -+ for (k = 0; k < num_extensions; ++k) { -+ const int len = strlen(extensions[k]); -+ if ((!singleLine) && (width + len > max)) { -+ /* start a new line */ -+ printf("\n"); -+ width = indent; -+ printf("%s", indentString); -+ } -+ /* print the extension name */ -+ printf("%s", extensions[k]); -+ -+ /* either we're all done, or we'll continue with next extension */ -+ width += len + 1; -+ -+ if (singleLine) { -+ printf("\n"); -+ width = indent; -+ printf("%s", indentString); -+ } -+ else if (k < (num_extensions -1)) { -+ printf(", "); -+ width += 2; -+ } -+ } -+ printf("\n"); -+ -+ for (k = 0; k < num_extensions; ++k) { -+ free(extensions[k]); -+ } -+ free(extensions); -+} -+ -+ -+ -+ -+/** -+ * Get list of OpenGL extensions using core profile's glGetStringi(). -+ */ -+char * -+build_core_profile_extension_list(const struct ext_functions *extfuncs) -+{ -+ GLint i, n, totalLen; -+ char *buffer; -+ -+ glGetIntegerv(GL_NUM_EXTENSIONS, &n); -+ -+ /* compute totalLen */ -+ totalLen = 0; -+ for (i = 0; i < n; i++) { -+ const char *ext = (const char *) extfuncs->GetStringi(GL_EXTENSIONS, i); -+ if (ext) -+ totalLen += strlen(ext) + 1; /* plus a space */ -+ } -+ -+ if (!totalLen) -+ return NULL; -+ -+ buffer = malloc(totalLen + 1); -+ if (buffer) { -+ int pos = 0; -+ for (i = 0; i < n; i++) { -+ const char *ext = (const char *) extfuncs->GetStringi(GL_EXTENSIONS, i); -+ strcpy(buffer + pos, ext); -+ pos += strlen(ext); -+ buffer[pos++] = ' '; -+ } -+ buffer[pos] = '\0'; -+ } -+ return buffer; -+} -+ -+ -+/** Is extension 'ext' supported? */ -+GLboolean -+extension_supported(const char *ext, const char *extensionsList) -+{ -+ while (1) { -+ const char *p = strstr(extensionsList, ext); -+ if (p) { -+ /* check that next char is a space or end of string */ -+ int extLen = strlen(ext); -+ if (p[extLen] == 0 || p[extLen] == ' ') { -+ return 1; -+ } -+ else { -+ /* We found a superset string, keep looking */ -+ extensionsList += extLen; -+ } -+ } -+ else { -+ break; -+ } -+ } -+ return 0; -+} -+ -+ -+/** -+ * Is verNum >= verString? -+ * \param verString such as "2.1", "3.0", etc. -+ * \param verNum such as 20, 21, 30, 31, 32, etc. -+ */ -+static GLboolean -+version_supported(const char *verString, int verNum) -+{ -+ int v; -+ -+ if (!verString || -+ !isdigit(verString[0]) || -+ verString[1] != '.' || -+ !isdigit(verString[2])) { -+ return GL_FALSE; -+ } -+ -+ v = (verString[0] - '0') * 10 + (verString[2] - '0'); -+ -+ return verNum >= v; -+} -+ -+ -+struct token_name -+{ -+ GLenum token; -+ const char *name; -+}; -+ -+ -+static void -+print_shader_limit_list(const struct token_name *lim) -+{ -+ GLint max[1]; -+ unsigned i; -+ -+ for (i = 0; lim[i].token; i++) { -+ glGetIntegerv(lim[i].token, max); -+ if (glGetError() == GL_NO_ERROR) { -+ printf(" %s = %d\n", lim[i].name, max[0]); -+ } -+ } -+} -+ -+ -+/** -+ * Print interesting limits for vertex/fragment shaders. -+ */ -+static void -+print_shader_limits(GLenum target) -+{ -+ static const struct token_name vertex_limits[] = { -+ { GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB, "GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB" }, -+ { GL_MAX_VARYING_FLOATS_ARB, "GL_MAX_VARYING_FLOATS_ARB" }, -+ { GL_MAX_VERTEX_ATTRIBS_ARB, "GL_MAX_VERTEX_ATTRIBS_ARB" }, -+ { GL_MAX_TEXTURE_IMAGE_UNITS_ARB, "GL_MAX_TEXTURE_IMAGE_UNITS_ARB" }, -+ { GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB, "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB" }, -+ { GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB, "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB" }, -+ { GL_MAX_TEXTURE_COORDS_ARB, "GL_MAX_TEXTURE_COORDS_ARB" }, -+ { GL_MAX_VERTEX_OUTPUT_COMPONENTS , "GL_MAX_VERTEX_OUTPUT_COMPONENTS " }, -+ { (GLenum) 0, NULL } -+ }; -+ static const struct token_name fragment_limits[] = { -+ { GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB, "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB" }, -+ { GL_MAX_TEXTURE_COORDS_ARB, "GL_MAX_TEXTURE_COORDS_ARB" }, -+ { GL_MAX_TEXTURE_IMAGE_UNITS_ARB, "GL_MAX_TEXTURE_IMAGE_UNITS_ARB" }, -+ { GL_MAX_FRAGMENT_INPUT_COMPONENTS , "GL_MAX_FRAGMENT_INPUT_COMPONENTS " }, -+ { (GLenum) 0, NULL } -+ }; -+ static const struct token_name geometry_limits[] = { -+ { GL_MAX_GEOMETRY_UNIFORM_COMPONENTS, "GL_MAX_GEOMETRY_UNIFORM_COMPONENTS" }, -+ { GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS, "GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS" }, -+ { GL_MAX_GEOMETRY_OUTPUT_VERTICES , "GL_MAX_GEOMETRY_OUTPUT_VERTICES " }, -+ { GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS, "GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS" }, -+ { GL_MAX_GEOMETRY_INPUT_COMPONENTS , "GL_MAX_GEOMETRY_INPUT_COMPONENTS " }, -+ { GL_MAX_GEOMETRY_OUTPUT_COMPONENTS, "GL_MAX_GEOMETRY_OUTPUT_COMPONENTS" }, -+ { (GLenum) 0, NULL } -+ }; -+ -+ switch (target) { -+ case GL_VERTEX_SHADER: -+ printf(" GL_VERTEX_SHADER_ARB:\n"); -+ print_shader_limit_list(vertex_limits); -+ break; -+ -+ case GL_FRAGMENT_SHADER: -+ printf(" GL_FRAGMENT_SHADER_ARB:\n"); -+ print_shader_limit_list(fragment_limits); -+ break; -+ -+ case GL_GEOMETRY_SHADER: -+ printf(" GL_GEOMETRY_SHADER:\n"); -+ print_shader_limit_list(geometry_limits); -+ break; -+ } -+} -+ -+ -+/** -+ * Print interesting limits for vertex/fragment programs. -+ */ -+static void -+print_program_limits(GLenum target, -+ const struct ext_functions *extfuncs) -+{ -+#if defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program) -+ struct token_name { -+ GLenum token; -+ const char *name; -+ }; -+ static const struct token_name common_limits[] = { -+ { GL_MAX_PROGRAM_INSTRUCTIONS_ARB, "GL_MAX_PROGRAM_INSTRUCTIONS_ARB" }, -+ { GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB, "GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB" }, -+ { GL_MAX_PROGRAM_TEMPORARIES_ARB, "GL_MAX_PROGRAM_TEMPORARIES_ARB" }, -+ { GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB, "GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB" }, -+ { GL_MAX_PROGRAM_PARAMETERS_ARB, "GL_MAX_PROGRAM_PARAMETERS_ARB" }, -+ { GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB, "GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB" }, -+ { GL_MAX_PROGRAM_ATTRIBS_ARB, "GL_MAX_PROGRAM_ATTRIBS_ARB" }, -+ { GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB, "GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB" }, -+ { GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB, "GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB" }, -+ { GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB, "GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB" }, -+ { GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB, "GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB" }, -+ { GL_MAX_PROGRAM_ENV_PARAMETERS_ARB, "GL_MAX_PROGRAM_ENV_PARAMETERS_ARB" }, -+ { (GLenum) 0, NULL } -+ }; -+ static const struct token_name fragment_limits[] = { -+ { GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB, "GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB" }, -+ { GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB, "GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB" }, -+ { GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB, "GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB" }, -+ { GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB, "GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB" }, -+ { GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB, "GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB" }, -+ { GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB, "GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB" }, -+ { (GLenum) 0, NULL } -+ }; -+ -+ GLint max[1]; -+ int i; -+ -+ if (target == GL_VERTEX_PROGRAM_ARB) { -+ printf(" GL_VERTEX_PROGRAM_ARB:\n"); -+ } -+ else if (target == GL_FRAGMENT_PROGRAM_ARB) { -+ printf(" GL_FRAGMENT_PROGRAM_ARB:\n"); -+ } -+ else { -+ return; /* something's wrong */ -+ } -+ -+ for (i = 0; common_limits[i].token; i++) { -+ extfuncs->GetProgramivARB(target, common_limits[i].token, max); -+ if (glGetError() == GL_NO_ERROR) { -+ printf(" %s = %d\n", common_limits[i].name, max[0]); -+ } -+ } -+ if (target == GL_FRAGMENT_PROGRAM_ARB) { -+ for (i = 0; fragment_limits[i].token; i++) { -+ extfuncs->GetProgramivARB(target, fragment_limits[i].token, max); -+ if (glGetError() == GL_NO_ERROR) { -+ printf(" %s = %d\n", fragment_limits[i].name, max[0]); -+ } -+ } -+ } -+#endif /* GL_ARB_vertex_program / GL_ARB_fragment_program */ -+} -+ -+ -+/** -+ * Print interesting OpenGL implementation limits. -+ * \param version 20, 21, 30, 31, 32, etc. -+ */ -+void -+print_limits(const char *extensions, const char *oglstring, int version, -+ const struct ext_functions *extfuncs) -+{ -+ struct token_name { -+ GLuint count; -+ GLenum token; -+ const char *name; -+ const char *extension; /* NULL or GL extension name or version string */ -+ }; -+ static const struct token_name limits[] = { -+ { 1, GL_MAX_ATTRIB_STACK_DEPTH, "GL_MAX_ATTRIB_STACK_DEPTH", NULL }, -+ { 1, GL_MAX_CLIENT_ATTRIB_STACK_DEPTH, "GL_MAX_CLIENT_ATTRIB_STACK_DEPTH", NULL }, -+ { 1, GL_MAX_CLIP_PLANES, "GL_MAX_CLIP_PLANES", NULL }, -+ { 1, GL_MAX_COLOR_MATRIX_STACK_DEPTH, "GL_MAX_COLOR_MATRIX_STACK_DEPTH", "GL_ARB_imaging" }, -+ { 1, GL_MAX_ELEMENTS_VERTICES, "GL_MAX_ELEMENTS_VERTICES", NULL }, -+ { 1, GL_MAX_ELEMENTS_INDICES, "GL_MAX_ELEMENTS_INDICES", NULL }, -+ { 1, GL_MAX_EVAL_ORDER, "GL_MAX_EVAL_ORDER", NULL }, -+ { 1, GL_MAX_LIGHTS, "GL_MAX_LIGHTS", NULL }, -+ { 1, GL_MAX_LIST_NESTING, "GL_MAX_LIST_NESTING", NULL }, -+ { 1, GL_MAX_MODELVIEW_STACK_DEPTH, "GL_MAX_MODELVIEW_STACK_DEPTH", NULL }, -+ { 1, GL_MAX_NAME_STACK_DEPTH, "GL_MAX_NAME_STACK_DEPTH", NULL }, -+ { 1, GL_MAX_PIXEL_MAP_TABLE, "GL_MAX_PIXEL_MAP_TABLE", NULL }, -+ { 1, GL_MAX_PROJECTION_STACK_DEPTH, "GL_MAX_PROJECTION_STACK_DEPTH", NULL }, -+ { 1, GL_MAX_TEXTURE_STACK_DEPTH, "GL_MAX_TEXTURE_STACK_DEPTH", NULL }, -+ { 1, GL_MAX_TEXTURE_SIZE, "GL_MAX_TEXTURE_SIZE", NULL }, -+ { 1, GL_MAX_3D_TEXTURE_SIZE, "GL_MAX_3D_TEXTURE_SIZE", NULL }, -+#if defined(GL_EXT_texture_array) -+ { 1, GL_MAX_ARRAY_TEXTURE_LAYERS_EXT, "GL_MAX_ARRAY_TEXTURE_LAYERS", "GL_EXT_texture_array" }, -+#endif -+ { 2, GL_MAX_VIEWPORT_DIMS, "GL_MAX_VIEWPORT_DIMS", NULL }, -+ { 2, GL_ALIASED_LINE_WIDTH_RANGE, "GL_ALIASED_LINE_WIDTH_RANGE", NULL }, -+ { 2, GL_SMOOTH_LINE_WIDTH_RANGE, "GL_SMOOTH_LINE_WIDTH_RANGE", NULL }, -+ { 2, GL_ALIASED_POINT_SIZE_RANGE, "GL_ALIASED_POINT_SIZE_RANGE", NULL }, -+ { 2, GL_SMOOTH_POINT_SIZE_RANGE, "GL_SMOOTH_POINT_SIZE_RANGE", NULL }, -+#if defined(GL_ARB_texture_cube_map) -+ { 1, GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB, "GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB", "GL_ARB_texture_cube_map" }, -+#endif -+#if defined(GL_NV_texture_rectangle) -+ { 1, GL_MAX_RECTANGLE_TEXTURE_SIZE_NV, "GL_MAX_RECTANGLE_TEXTURE_SIZE_NV", "GL_NV_texture_rectangle" }, -+#endif -+#if defined(GL_ARB_multitexture) -+ { 1, GL_MAX_TEXTURE_UNITS_ARB, "GL_MAX_TEXTURE_UNITS_ARB", "GL_ARB_multitexture" }, -+#endif -+#if defined(GL_EXT_texture_lod_bias) -+ { 1, GL_MAX_TEXTURE_LOD_BIAS_EXT, "GL_MAX_TEXTURE_LOD_BIAS_EXT", "GL_EXT_texture_lod_bias" }, -+#endif -+#if defined(GL_EXT_texture_filter_anisotropic) -+ { 1, GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, "GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT", "GL_EXT_texture_filter_anisotropic" }, -+#endif -+#if defined(GL_ARB_draw_buffers) -+ { 1, GL_MAX_DRAW_BUFFERS_ARB, "GL_MAX_DRAW_BUFFERS_ARB", "GL_ARB_draw_buffers" }, -+#endif -+#if defined(GL_ARB_blend_func_extended) -+ { 1, GL_MAX_DUAL_SOURCE_DRAW_BUFFERS, "GL_MAX_DUAL_SOURCE_DRAW_BUFFERS", "GL_ARB_blend_func_extended" }, -+#endif -+#if defined (GL_ARB_framebuffer_object) -+ { 1, GL_MAX_RENDERBUFFER_SIZE, "GL_MAX_RENDERBUFFER_SIZE", "GL_ARB_framebuffer_object" }, -+ { 1, GL_MAX_COLOR_ATTACHMENTS, "GL_MAX_COLOR_ATTACHMENTS", "GL_ARB_framebuffer_object" }, -+ { 1, GL_MAX_SAMPLES, "GL_MAX_SAMPLES", "GL_ARB_framebuffer_object" }, -+#endif -+#if defined (GL_EXT_transform_feedback) -+ { 1, GL_MAX_TRANSFORM_FEEDBACK_BUFFERS, "GL_MAX_TRANSFORM_FEEDBACK_BUFFERS", "GL_EXT_transform_feedback" }, -+ { 1, GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT, "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS", "GL_EXT_transform_feedback" }, -+ { 1, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT, "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS", "GL_EXT_transform_feedback", }, -+ { 1, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT, "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS", "GL_EXT_transform_feedback" }, -+#endif -+#if defined (GL_ARB_texture_buffer_object) -+ { 1, GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT, "GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT", "GL_ARB_texture_buffer_object" }, -+ { 1, GL_MAX_TEXTURE_BUFFER_SIZE, "GL_MAX_TEXTURE_BUFFER_SIZE", "GL_ARB_texture_buffer_object" }, -+#endif -+#if defined (GL_ARB_texture_multisample) -+ { 1, GL_MAX_COLOR_TEXTURE_SAMPLES, "GL_MAX_COLOR_TEXTURE_SAMPLES", "GL_ARB_texture_multisample" }, -+ { 1, GL_MAX_DEPTH_TEXTURE_SAMPLES, "GL_MAX_DEPTH_TEXTURE_SAMPLES", "GL_ARB_texture_multisample" }, -+ { 1, GL_MAX_INTEGER_SAMPLES, "GL_MAX_INTEGER_SAMPLES", "GL_ARB_texture_multisample" }, -+#endif -+#if defined (GL_ARB_uniform_buffer_object) -+ { 1, GL_MAX_VERTEX_UNIFORM_BLOCKS, "GL_MAX_VERTEX_UNIFORM_BLOCKS", "GL_ARB_uniform_buffer_object" }, -+ { 1, GL_MAX_FRAGMENT_UNIFORM_BLOCKS, "GL_MAX_FRAGMENT_UNIFORM_BLOCKS", "GL_ARB_uniform_buffer_object" }, -+ { 1, GL_MAX_GEOMETRY_UNIFORM_BLOCKS, "GL_MAX_GEOMETRY_UNIFORM_BLOCKS" , "GL_ARB_uniform_buffer_object" }, -+ { 1, GL_MAX_COMBINED_UNIFORM_BLOCKS, "GL_MAX_COMBINED_UNIFORM_BLOCKS", "GL_ARB_uniform_buffer_object" }, -+ { 1, GL_MAX_UNIFORM_BUFFER_BINDINGS, "GL_MAX_UNIFORM_BUFFER_BINDINGS", "GL_ARB_uniform_buffer_object" }, -+ { 1, GL_MAX_UNIFORM_BLOCK_SIZE, "GL_MAX_UNIFORM_BLOCK_SIZE", "GL_ARB_uniform_buffer_object" }, -+ { 1, GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, "GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS", "GL_ARB_uniform_buffer_object" }, -+ { 1, GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, "GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS", "GL_ARB_uniform_buffer_object" }, -+ { 1, GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS, "GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS", "GL_ARB_uniform_buffer_object" }, -+ { 1, GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, "GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT", "GL_ARB_uniform_buffer_object" }, -+#endif -+#if defined (GL_ARB_vertex_attrib_binding) -+ { 1, GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, "GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET", "GL_ARB_vertex_attrib_binding" }, -+ { 1, GL_MAX_VERTEX_ATTRIB_BINDINGS, "GL_MAX_VERTEX_ATTRIB_BINDINGS", "GL_ARB_vertex_attrib_binding" }, -+#endif -+#if defined(GL_VERSION_4_4) -+ { 1, GL_MAX_VERTEX_ATTRIB_STRIDE, "GL_MAX_VERTEX_ATTRIB_STRIDE", "4.4" }, -+#endif -+ { 0, (GLenum) 0, NULL, NULL } -+ }; -+ GLint i, max[2]; -+ -+ printf("%s limits:\n", oglstring); -+ for (i = 0; limits[i].count; i++) { -+ if (!limits[i].extension || -+ version_supported(limits[i].extension, version) || -+ extension_supported(limits[i].extension, extensions)) { -+ glGetIntegerv(limits[i].token, max); -+ if (glGetError() == GL_NO_ERROR) { -+ if (limits[i].count == 1) -+ printf(" %s = %d\n", limits[i].name, max[0]); -+ else /* XXX fix if we ever query something with more than 2 values */ -+ printf(" %s = %d, %d\n", limits[i].name, max[0], max[1]); -+ } -+ } -+ } -+ -+ /* these don't fit into the above mechanism, unfortunately */ -+ if (extension_supported("GL_ARB_imaging", extensions)) { -+ extfuncs->GetConvolutionParameteriv(GL_CONVOLUTION_2D, -+ GL_MAX_CONVOLUTION_WIDTH, max); -+ extfuncs->GetConvolutionParameteriv(GL_CONVOLUTION_2D, -+ GL_MAX_CONVOLUTION_HEIGHT, max+1); -+ printf(" GL_MAX_CONVOLUTION_WIDTH/HEIGHT = %d, %d\n", max[0], max[1]); -+ } -+ -+ if (extension_supported("GL_ARB_texture_compression", extensions)) { -+ GLint i, n; -+ GLint *formats; -+ glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &n); -+ printf(" GL_NUM_COMPRESSED_TEXTURE_FORMATS = %d\n", n); -+ formats = (GLint *) malloc(n * sizeof(GLint)); -+ glGetIntegerv(GL_COMPRESSED_TEXTURE_FORMATS, formats); -+ for (i = 0; i < n; i++) { -+ printf(" %s\n", enum_name(formats[i])); -+ } -+ free(formats); -+ } -+#if defined(GL_ARB_vertex_program) -+ if (extension_supported("GL_ARB_vertex_program", extensions)) { -+ print_program_limits(GL_VERTEX_PROGRAM_ARB, extfuncs); -+ } -+#endif -+#if defined(GL_ARB_fragment_program) -+ if (extension_supported("GL_ARB_fragment_program", extensions)) { -+ print_program_limits(GL_FRAGMENT_PROGRAM_ARB, extfuncs); -+ } -+#endif -+ if (extension_supported("GL_ARB_vertex_shader", extensions)) { -+ print_shader_limits(GL_VERTEX_SHADER_ARB); -+ } -+ if (extension_supported("GL_ARB_fragment_shader", extensions)) { -+ print_shader_limits(GL_FRAGMENT_SHADER_ARB); -+ } -+ if (version >= 32) { -+ print_shader_limits(GL_GEOMETRY_SHADER); -+ } -+} -+ -+ -+ -+/** -+ * Return string representation for bits in a bitmask. -+ */ -+const char * -+bitmask_to_string(const struct bit_info bits[], int numBits, int mask) -+{ -+ static char buffer[256], *p; -+ int i; -+ -+ strcpy(buffer, "(none)"); -+ p = buffer; -+ for (i = 0; i < numBits; i++) { -+ if (mask & bits[i].bit) { -+ if (p > buffer) -+ *p++ = ','; -+ strcpy(p, bits[i].name); -+ p += strlen(bits[i].name); -+ } -+ } -+ -+ return buffer; -+} -+ -+/** -+ * Return string representation for the bitmask returned by -+ * GL_CONTEXT_PROFILE_MASK (OpenGL 3.2 or later). -+ */ -+const char * -+profile_mask_string(int mask) -+{ -+ const static struct bit_info bits[] = { -+#ifdef GL_CONTEXT_CORE_PROFILE_BIT -+ { GL_CONTEXT_CORE_PROFILE_BIT, "core profile"}, -+#endif -+#ifdef GL_CONTEXT_COMPATIBILITY_PROFILE_BIT -+ { GL_CONTEXT_COMPATIBILITY_PROFILE_BIT, "compatibility profile" } -+#endif -+ }; -+ -+ return bitmask_to_string(bits, ELEMENTS(bits), mask); -+} -+ -+ -+/** -+ * Return string representation for the bitmask returned by -+ * GL_CONTEXT_FLAGS (OpenGL 3.0 or later). -+ */ -+const char * -+context_flags_string(int mask) -+{ -+ const static struct bit_info bits[] = { -+#ifdef GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT -+ { GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT, "forward-compatible" }, -+#endif -+#ifdef GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB -+ { GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB, "robust-access" }, -+#endif -+ }; -+ -+ return bitmask_to_string(bits, ELEMENTS(bits), mask); -+} -+ -+ -+static void -+usage(void) -+{ -+#ifdef _WIN32 -+ printf("Usage: wglinfo [-v] [-t] [-h] [-b] [-l] [-s]\n"); -+#else -+ printf("Usage: glxinfo [-v] [-t] [-h] [-b] [-l] [-s] [-i] [-display ]\n"); -+ printf("\t-display : Print GLX visuals on specified server.\n"); -+ printf("\t-i: Force an indirect rendering context.\n"); -+#endif -+ printf("\t-B: brief output, print only the basics.\n"); -+ printf("\t-v: Print visuals info in verbose form.\n"); -+ printf("\t-t: Print verbose table.\n"); -+ printf("\t-h: This information.\n"); -+ printf("\t-b: Find the 'best' visual and print its number.\n"); -+ printf("\t-l: Print interesting OpenGL limits.\n"); -+ printf("\t-s: Print a single extension per line.\n"); -+} -+ -+void -+parse_args(int argc, char *argv[], struct options *options) -+{ -+ int i; -+ -+ options->mode = Normal; -+ options->findBest = GL_FALSE; -+ options->limits = GL_FALSE; -+ options->singleLine = GL_FALSE; -+ options->displayName = NULL; -+ options->allowDirect = GL_TRUE; -+ -+ for (i = 1; i < argc; i++) { -+#ifndef _WIN32 -+ if (strcmp(argv[i], "-display") == 0 && i + 1 < argc) { -+ options->displayName = argv[i + 1]; -+ i++; -+ } -+ else if (strcmp(argv[i], "-i") == 0) { -+ options->allowDirect = GL_FALSE; -+ } -+ else -+#endif -+ if (strcmp(argv[i], "-t") == 0) { -+ options->mode = Wide; -+ } -+ else if (strcmp(argv[i], "-v") == 0) { -+ options->mode = Verbose; -+ } -+ else if (strcmp(argv[i], "-B") == 0) { -+ options->mode = Brief; -+ } -+ else if (strcmp(argv[i], "-b") == 0) { -+ options->findBest = GL_TRUE; -+ } -+ else if (strcmp(argv[i], "-l") == 0) { -+ options->limits = GL_TRUE; -+ } -+ else if (strcmp(argv[i], "-h") == 0) { -+ usage(); -+ exit(0); -+ } -+ else if(strcmp(argv[i], "-s") == 0) { -+ options->singleLine = GL_TRUE; -+ } -+ else { -+ printf("Unknown option `%s'\n", argv[i]); -+ usage(); -+ exit(0); -+ } -+ } -+} -diff -aruN old/src/glx/xdemos/glinfo_common.h new/src/glx/xdemos/glinfo_common.h ---- old/src/glx/xdemos/glinfo_common.h 1970-01-01 01:00:00.000000000 +0100 -+++ new/src/glx/xdemos/glinfo_common.h 2021-12-31 12:15:26.361776512 +0000 -@@ -0,0 +1,142 @@ -+/* -+ * Copyright (C) 1999-2014 Brian Paul All Rights Reserved. -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, including without limitation -+ * the rights to use, copy, modify, merge, publish, distribute, sublicense, -+ * and/or sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included -+ * in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+ -+/** -+ * Common code shared by glxinfo and wglinfo. -+ */ -+ -+#ifndef GLINFO_COMMON_H -+#define GLINFO_COMMON_H -+ -+ -+#ifdef _WIN32 -+/* GL/glext.h is not commonly available on Windows. */ -+#include -+#else -+#include -+#include -+#endif -+ -+typedef void (APIENTRY * GETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params); -+typedef const GLubyte *(APIENTRY * GETSTRINGIPROC) (GLenum name, GLuint index); -+typedef void (APIENTRY * GETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -+ -+ -+/** -+ * Ext functions needed in common code but must be provided by -+ * glxinfo or wglinfo. -+ */ -+struct ext_functions -+{ -+ GETPROGRAMIVARBPROC GetProgramivARB; -+ GETSTRINGIPROC GetStringi; -+ GETCONVOLUTIONPARAMETERIVPROC GetConvolutionParameteriv; -+}; -+ -+ -+#define ELEMENTS(array) (sizeof(array) / sizeof(array[0])) -+ -+ -+struct bit_info -+{ -+ int bit; -+ const char *name; -+}; -+ -+ -+typedef enum -+{ -+ Normal, -+ Wide, -+ Verbose, -+ Brief -+} InfoMode; -+ -+ -+struct options -+{ -+ InfoMode mode; -+ GLboolean findBest; -+ GLboolean limits; -+ GLboolean singleLine; -+ /* GLX only */ -+ char *displayName; -+ GLboolean allowDirect; -+}; -+ -+ -+/** list of known OpenGL versions */ -+static const struct { int major, minor; } gl_versions[] = { -+ {4, 5}, -+ {4, 4}, -+ {4, 3}, -+ {4, 2}, -+ {4, 1}, -+ {4, 0}, -+ -+ {3, 3}, -+ {3, 2}, -+ {3, 1}, -+ {3, 0}, -+ -+ {2, 1}, -+ {2, 0}, -+ -+ {1, 5}, -+ {1, 4}, -+ {1, 3}, -+ {1, 2}, -+ {1, 1}, -+ {1, 0}, -+ -+ {0, 0} /* end of list */ -+}; -+ -+ -+void -+print_extension_list(const char *ext, GLboolean singleLine); -+ -+char * -+build_core_profile_extension_list(const struct ext_functions *extfuncs); -+ -+GLboolean -+extension_supported(const char *ext, const char *extensionsList); -+ -+void -+print_limits(const char *extensions, const char *oglstring, int version, -+ const struct ext_functions *extfuncs); -+ -+const char * -+bitmask_to_string(const struct bit_info bits[], int numBits, int mask); -+ -+const char * -+profile_mask_string(int mask); -+ -+const char * -+context_flags_string(int mask); -+ -+ -+void -+parse_args(int argc, char *argv[], struct options *options); -+ -+ -+#endif /* GLINFO_COMMON_H */ -diff -aruN old/src/glx/xdemos/glxgears.1 new/src/glx/xdemos/glxgears.1 ---- old/src/glx/xdemos/glxgears.1 1970-01-01 01:00:00.000000000 +0100 -+++ new/src/glx/xdemos/glxgears.1 2021-12-31 12:15:26.361776512 +0000 -@@ -0,0 +1,37 @@ -+.TH glxgears 1 "2006-11-29" -+.SH NAME -+glxgears \- ``gears'' demo for GLX -+.SH SYNOPSIS -+.B glxgears -+.RI [ options ] -+.SH DESCRIPTION -+The \fIglxgears\fP program is a port of the ``gears'' demo to GLX. It displays -+a set of rotating gears and prints out the frame rate at regular intervals. It -+has become quite popular as basic benchmarking tool. -+.SH OPTIONS -+.TP 8 -+.B \-display \fIdisplay\fP -+Specify which X display to run on. -+.TP 8 -+.B \-stereo -+Use a stereo enabled GLX visual. -+.TP 8 -+.B \-samples \fIN\fP -+Run in multisample mode with at least N samples. -+.TP 8 -+.B \-fullscreen -+Run in fullscreen mode. -+.TP 8 -+.B \-info -+Display OpenGL renderer information. -+.TP 8 -+.B \-geometry \fIWxH+X+Y\fP -+Window geometry. -+.SH AUTHOR -+glxgears was written by Brian Paul . -+.PP -+This manual page was written by Thierry Reding , for the -+Debian project and updated by Fernando de Oliveira , for the Linux From Scratch (LFS) project (but may be used by -+others). -+ -diff -aruN old/src/glx/xdemos/glxgears.c new/src/glx/xdemos/glxgears.c ---- old/src/glx/xdemos/glxgears.c 1970-01-01 01:00:00.000000000 +0100 -+++ new/src/glx/xdemos/glxgears.c 2021-12-31 12:15:26.361776512 +0000 -@@ -0,0 +1,809 @@ -+/* -+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, including without limitation -+ * the rights to use, copy, modify, merge, publish, distribute, sublicense, -+ * and/or sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included -+ * in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/* -+ * This is a port of the infamous "gears" demo to straight GLX (i.e. no GLUT) -+ * Port by Brian Paul 23 March 2001 -+ * -+ * See usage() below for command line options. -+ */ -+ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#ifndef GLX_MESA_swap_control -+#define GLX_MESA_swap_control 1 -+typedef int (*PFNGLXGETSWAPINTERVALMESAPROC)(void); -+#endif -+ -+ -+#define BENCHMARK -+ -+#ifdef BENCHMARK -+ -+/* XXX this probably isn't very portable */ -+ -+#include -+#include -+ -+/* return current time (in seconds) */ -+static double -+current_time(void) -+{ -+ struct timeval tv; -+#ifdef __VMS -+ (void) gettimeofday(&tv, NULL ); -+#else -+ struct timezone tz; -+ (void) gettimeofday(&tv, &tz); -+#endif -+ return (double) tv.tv_sec + tv.tv_usec / 1000000.0; -+} -+ -+#else /*BENCHMARK*/ -+ -+/* dummy */ -+static double -+current_time(void) -+{ -+ /* update this function for other platforms! */ -+ static double t = 0.0; -+ static int warn = 1; -+ if (warn) { -+ fprintf(stderr, "Warning: current_time() not implemented!!\n"); -+ warn = 0; -+ } -+ return t += 1.0; -+} -+ -+#endif /*BENCHMARK*/ -+ -+ -+ -+#ifndef M_PI -+#define M_PI 3.14159265 -+#endif -+ -+ -+/** Event handler results: */ -+#define NOP 0 -+#define EXIT 1 -+#define DRAW 2 -+ -+static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0; -+static GLint gear1, gear2, gear3; -+static GLfloat angle = 0.0; -+ -+static GLboolean fullscreen = GL_FALSE; /* Create a single fullscreen window */ -+static GLboolean stereo = GL_FALSE; /* Enable stereo. */ -+static GLint samples = 0; /* Choose visual with at least N samples. */ -+static GLboolean animate = GL_TRUE; /* Animation */ -+static GLfloat eyesep = 5.0; /* Eye separation. */ -+static GLfloat fix_point = 40.0; /* Fixation point distance. */ -+static GLfloat left, right, asp; /* Stereo frustum params. */ -+ -+ -+/* -+ * -+ * Draw a gear wheel. You'll probably want to call this function when -+ * building a display list since we do a lot of trig here. -+ * -+ * Input: inner_radius - radius of hole at center -+ * outer_radius - radius at center of teeth -+ * width - width of gear -+ * teeth - number of teeth -+ * tooth_depth - depth of tooth -+ */ -+static void -+gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, -+ GLint teeth, GLfloat tooth_depth) -+{ -+ GLint i; -+ GLfloat r0, r1, r2; -+ GLfloat angle, da; -+ GLfloat u, v, len; -+ -+ r0 = inner_radius; -+ r1 = outer_radius - tooth_depth / 2.0; -+ r2 = outer_radius + tooth_depth / 2.0; -+ -+ da = 2.0 * M_PI / teeth / 4.0; -+ -+ glShadeModel(GL_FLAT); -+ -+ glNormal3f(0.0, 0.0, 1.0); -+ -+ /* draw front face */ -+ glBegin(GL_QUAD_STRIP); -+ for (i = 0; i <= teeth; i++) { -+ angle = i * 2.0 * M_PI / teeth; -+ glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); -+ glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); -+ if (i < teeth) { -+ glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); -+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -+ width * 0.5); -+ } -+ } -+ glEnd(); -+ -+ /* draw front sides of teeth */ -+ glBegin(GL_QUADS); -+ da = 2.0 * M_PI / teeth / 4.0; -+ for (i = 0; i < teeth; i++) { -+ angle = i * 2.0 * M_PI / teeth; -+ -+ glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); -+ glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); -+ glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -+ width * 0.5); -+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -+ width * 0.5); -+ } -+ glEnd(); -+ -+ glNormal3f(0.0, 0.0, -1.0); -+ -+ /* draw back face */ -+ glBegin(GL_QUAD_STRIP); -+ for (i = 0; i <= teeth; i++) { -+ angle = i * 2.0 * M_PI / teeth; -+ glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); -+ glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); -+ if (i < teeth) { -+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -+ -width * 0.5); -+ glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); -+ } -+ } -+ glEnd(); -+ -+ /* draw back sides of teeth */ -+ glBegin(GL_QUADS); -+ da = 2.0 * M_PI / teeth / 4.0; -+ for (i = 0; i < teeth; i++) { -+ angle = i * 2.0 * M_PI / teeth; -+ -+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -+ -width * 0.5); -+ glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -+ -width * 0.5); -+ glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); -+ glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); -+ } -+ glEnd(); -+ -+ /* draw outward faces of teeth */ -+ glBegin(GL_QUAD_STRIP); -+ for (i = 0; i < teeth; i++) { -+ angle = i * 2.0 * M_PI / teeth; -+ -+ glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); -+ glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); -+ u = r2 * cos(angle + da) - r1 * cos(angle); -+ v = r2 * sin(angle + da) - r1 * sin(angle); -+ len = sqrt(u * u + v * v); -+ u /= len; -+ v /= len; -+ glNormal3f(v, -u, 0.0); -+ glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); -+ glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); -+ glNormal3f(cos(angle), sin(angle), 0.0); -+ glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -+ width * 0.5); -+ glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -+ -width * 0.5); -+ u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da); -+ v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da); -+ glNormal3f(v, -u, 0.0); -+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -+ width * 0.5); -+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -+ -width * 0.5); -+ glNormal3f(cos(angle), sin(angle), 0.0); -+ } -+ -+ glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5); -+ glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5); -+ -+ glEnd(); -+ -+ glShadeModel(GL_SMOOTH); -+ -+ /* draw inside radius cylinder */ -+ glBegin(GL_QUAD_STRIP); -+ for (i = 0; i <= teeth; i++) { -+ angle = i * 2.0 * M_PI / teeth; -+ glNormal3f(-cos(angle), -sin(angle), 0.0); -+ glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); -+ glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); -+ } -+ glEnd(); -+} -+ -+ -+static void -+draw(void) -+{ -+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); -+ -+ glPushMatrix(); -+ glRotatef(view_rotx, 1.0, 0.0, 0.0); -+ glRotatef(view_roty, 0.0, 1.0, 0.0); -+ glRotatef(view_rotz, 0.0, 0.0, 1.0); -+ -+ glPushMatrix(); -+ glTranslatef(-3.0, -2.0, 0.0); -+ glRotatef(angle, 0.0, 0.0, 1.0); -+ glCallList(gear1); -+ glPopMatrix(); -+ -+ glPushMatrix(); -+ glTranslatef(3.1, -2.0, 0.0); -+ glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0); -+ glCallList(gear2); -+ glPopMatrix(); -+ -+ glPushMatrix(); -+ glTranslatef(-3.1, 4.2, 0.0); -+ glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0); -+ glCallList(gear3); -+ glPopMatrix(); -+ -+ glPopMatrix(); -+} -+ -+ -+static void -+draw_gears(void) -+{ -+ if (stereo) { -+ /* First left eye. */ -+ glDrawBuffer(GL_BACK_LEFT); -+ -+ glMatrixMode(GL_PROJECTION); -+ glLoadIdentity(); -+ glFrustum(left, right, -asp, asp, 5.0, 60.0); -+ -+ glMatrixMode(GL_MODELVIEW); -+ -+ glPushMatrix(); -+ glTranslated(+0.5 * eyesep, 0.0, 0.0); -+ draw(); -+ glPopMatrix(); -+ -+ /* Then right eye. */ -+ glDrawBuffer(GL_BACK_RIGHT); -+ -+ glMatrixMode(GL_PROJECTION); -+ glLoadIdentity(); -+ glFrustum(-right, -left, -asp, asp, 5.0, 60.0); -+ -+ glMatrixMode(GL_MODELVIEW); -+ -+ glPushMatrix(); -+ glTranslated(-0.5 * eyesep, 0.0, 0.0); -+ draw(); -+ glPopMatrix(); -+ } -+ else { -+ draw(); -+ } -+} -+ -+ -+/** Draw single frame, do SwapBuffers, compute FPS */ -+static void -+draw_frame(Display *dpy, Window win) -+{ -+ static int frames = 0; -+ static double tRot0 = -1.0, tRate0 = -1.0; -+ double dt, t = current_time(); -+ -+ if (tRot0 < 0.0) -+ tRot0 = t; -+ dt = t - tRot0; -+ tRot0 = t; -+ -+ if (animate) { -+ /* advance rotation for next frame */ -+ angle += 70.0 * dt; /* 70 degrees per second */ -+ if (angle > 3600.0) -+ angle -= 3600.0; -+ } -+ -+ draw_gears(); -+ glXSwapBuffers(dpy, win); -+ -+ frames++; -+ -+ if (tRate0 < 0.0) -+ tRate0 = t; -+ if (t - tRate0 >= 5.0) { -+ GLfloat seconds = t - tRate0; -+ GLfloat fps = frames / seconds; -+ printf("%d frames in %3.1f seconds = %6.3f FPS\n", frames, seconds, -+ fps); -+ fflush(stdout); -+ tRate0 = t; -+ frames = 0; -+ } -+} -+ -+ -+/* new window size or exposure */ -+static void -+reshape(int width, int height) -+{ -+ glViewport(0, 0, (GLint) width, (GLint) height); -+ -+ if (stereo) { -+ GLfloat w; -+ -+ asp = (GLfloat) height / (GLfloat) width; -+ w = fix_point * (1.0 / 5.0); -+ -+ left = -5.0 * ((w - 0.5 * eyesep) / fix_point); -+ right = 5.0 * ((w + 0.5 * eyesep) / fix_point); -+ } -+ else { -+ GLfloat h = (GLfloat) height / (GLfloat) width; -+ -+ glMatrixMode(GL_PROJECTION); -+ glLoadIdentity(); -+ glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0); -+ } -+ -+ glMatrixMode(GL_MODELVIEW); -+ glLoadIdentity(); -+ glTranslatef(0.0, 0.0, -40.0); -+} -+ -+ -+ -+static void -+init(void) -+{ -+ static GLfloat pos[4] = { 5.0, 5.0, 10.0, 0.0 }; -+ static GLfloat red[4] = { 0.8, 0.1, 0.0, 1.0 }; -+ static GLfloat green[4] = { 0.0, 0.8, 0.2, 1.0 }; -+ static GLfloat blue[4] = { 0.2, 0.2, 1.0, 1.0 }; -+ -+ glLightfv(GL_LIGHT0, GL_POSITION, pos); -+ glEnable(GL_CULL_FACE); -+ glEnable(GL_LIGHTING); -+ glEnable(GL_LIGHT0); -+ glEnable(GL_DEPTH_TEST); -+ -+ /* make the gears */ -+ gear1 = glGenLists(1); -+ glNewList(gear1, GL_COMPILE); -+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); -+ gear(1.0, 4.0, 1.0, 20, 0.7); -+ glEndList(); -+ -+ gear2 = glGenLists(1); -+ glNewList(gear2, GL_COMPILE); -+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); -+ gear(0.5, 2.0, 2.0, 10, 0.7); -+ glEndList(); -+ -+ gear3 = glGenLists(1); -+ glNewList(gear3, GL_COMPILE); -+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); -+ gear(1.3, 2.0, 0.5, 10, 0.7); -+ glEndList(); -+ -+ glEnable(GL_NORMALIZE); -+} -+ -+ -+/** -+ * Remove window border/decorations. -+ */ -+static void -+no_border( Display *dpy, Window w) -+{ -+ static const unsigned MWM_HINTS_DECORATIONS = (1 << 1); -+ static const int PROP_MOTIF_WM_HINTS_ELEMENTS = 5; -+ -+ typedef struct -+ { -+ unsigned long flags; -+ unsigned long functions; -+ unsigned long decorations; -+ long inputMode; -+ unsigned long status; -+ } PropMotifWmHints; -+ -+ PropMotifWmHints motif_hints; -+ Atom prop, proptype; -+ unsigned long flags = 0; -+ -+ /* setup the property */ -+ motif_hints.flags = MWM_HINTS_DECORATIONS; -+ motif_hints.decorations = flags; -+ -+ /* get the atom for the property */ -+ prop = XInternAtom( dpy, "_MOTIF_WM_HINTS", True ); -+ if (!prop) { -+ /* something went wrong! */ -+ return; -+ } -+ -+ /* not sure this is correct, seems to work, XA_WM_HINTS didn't work */ -+ proptype = prop; -+ -+ XChangeProperty( dpy, w, /* display, window */ -+ prop, proptype, /* property, type */ -+ 32, /* format: 32-bit datums */ -+ PropModeReplace, /* mode */ -+ (unsigned char *) &motif_hints, /* data */ -+ PROP_MOTIF_WM_HINTS_ELEMENTS /* nelements */ -+ ); -+} -+ -+ -+/* -+ * Create an RGB, double-buffered window. -+ * Return the window and context handles. -+ */ -+static void -+make_window( Display *dpy, const char *name, -+ int x, int y, int width, int height, -+ Window *winRet, GLXContext *ctxRet, VisualID *visRet) -+{ -+ int attribs[64]; -+ int i = 0; -+ -+ int scrnum; -+ XSetWindowAttributes attr; -+ unsigned long mask; -+ Window root; -+ Window win; -+ GLXContext ctx; -+ XVisualInfo *visinfo; -+ -+ /* Singleton attributes. */ -+ attribs[i++] = GLX_RGBA; -+ attribs[i++] = GLX_DOUBLEBUFFER; -+ if (stereo) -+ attribs[i++] = GLX_STEREO; -+ -+ /* Key/value attributes. */ -+ attribs[i++] = GLX_RED_SIZE; -+ attribs[i++] = 1; -+ attribs[i++] = GLX_GREEN_SIZE; -+ attribs[i++] = 1; -+ attribs[i++] = GLX_BLUE_SIZE; -+ attribs[i++] = 1; -+ attribs[i++] = GLX_DEPTH_SIZE; -+ attribs[i++] = 1; -+ if (samples > 0) { -+ attribs[i++] = GLX_SAMPLE_BUFFERS; -+ attribs[i++] = 1; -+ attribs[i++] = GLX_SAMPLES; -+ attribs[i++] = samples; -+ } -+ -+ attribs[i++] = None; -+ -+ scrnum = DefaultScreen( dpy ); -+ root = RootWindow( dpy, scrnum ); -+ -+ visinfo = glXChooseVisual(dpy, scrnum, attribs); -+ if (!visinfo) { -+ printf("Error: couldn't get an RGB, Double-buffered"); -+ if (stereo) -+ printf(", Stereo"); -+ if (samples > 0) -+ printf(", Multisample"); -+ printf(" visual\n"); -+ exit(1); -+ } -+ -+ /* window attributes */ -+ attr.background_pixel = 0; -+ attr.border_pixel = 0; -+ attr.colormap = XCreateColormap( dpy, root, visinfo->visual, AllocNone); -+ attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; -+ /* XXX this is a bad way to get a borderless window! */ -+ mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; -+ -+ win = XCreateWindow( dpy, root, x, y, width, height, -+ 0, visinfo->depth, InputOutput, -+ visinfo->visual, mask, &attr ); -+ -+ if (fullscreen) -+ no_border(dpy, win); -+ -+ /* set hints and properties */ -+ { -+ XSizeHints sizehints; -+ sizehints.x = x; -+ sizehints.y = y; -+ sizehints.width = width; -+ sizehints.height = height; -+ sizehints.flags = USSize | USPosition; -+ XSetNormalHints(dpy, win, &sizehints); -+ XSetStandardProperties(dpy, win, name, name, -+ None, (char **)NULL, 0, &sizehints); -+ } -+ -+ ctx = glXCreateContext( dpy, visinfo, NULL, True ); -+ if (!ctx) { -+ printf("Error: glXCreateContext failed\n"); -+ exit(1); -+ } -+ -+ *winRet = win; -+ *ctxRet = ctx; -+ *visRet = visinfo->visualid; -+ -+ XFree(visinfo); -+} -+ -+ -+/** -+ * Determine whether or not a GLX extension is supported. -+ */ -+static int -+is_glx_extension_supported(Display *dpy, const char *query) -+{ -+ const int scrnum = DefaultScreen(dpy); -+ const char *glx_extensions = NULL; -+ const size_t len = strlen(query); -+ const char *ptr; -+ -+ if (glx_extensions == NULL) { -+ glx_extensions = glXQueryExtensionsString(dpy, scrnum); -+ } -+ -+ ptr = strstr(glx_extensions, query); -+ return ((ptr != NULL) && ((ptr[len] == ' ') || (ptr[len] == '\0'))); -+} -+ -+ -+/** -+ * Attempt to determine whether or not the display is synched to vblank. -+ */ -+static void -+query_vsync(Display *dpy, GLXDrawable drawable) -+{ -+ int interval = 0; -+ -+#if defined(GLX_EXT_swap_control) -+ if (is_glx_extension_supported(dpy, "GLX_EXT_swap_control")) { -+ unsigned int tmp = -1; -+ glXQueryDrawable(dpy, drawable, GLX_SWAP_INTERVAL_EXT, &tmp); -+ interval = tmp; -+ } else -+#endif -+ if (is_glx_extension_supported(dpy, "GLX_MESA_swap_control")) { -+ PFNGLXGETSWAPINTERVALMESAPROC pglXGetSwapIntervalMESA = -+ (PFNGLXGETSWAPINTERVALMESAPROC) -+ glXGetProcAddressARB((const GLubyte *) "glXGetSwapIntervalMESA"); -+ -+ interval = (*pglXGetSwapIntervalMESA)(); -+ } else if (is_glx_extension_supported(dpy, "GLX_SGI_swap_control")) { -+ /* The default swap interval with this extension is 1. Assume that it -+ * is set to the default. -+ * -+ * Many Mesa-based drivers default to 0, but all of these drivers also -+ * export GLX_MESA_swap_control. In that case, this branch will never -+ * be taken, and the correct result should be reported. -+ */ -+ interval = 1; -+ } -+ -+ -+ if (interval > 0) { -+ printf("Running synchronized to the vertical refresh. The framerate should be\n"); -+ if (interval == 1) { -+ printf("approximately the same as the monitor refresh rate.\n"); -+ } else if (interval > 1) { -+ printf("approximately 1/%d the monitor refresh rate.\n", -+ interval); -+ } -+ } -+} -+ -+/** -+ * Handle one X event. -+ * \return NOP, EXIT or DRAW -+ */ -+static int -+handle_event(Display *dpy, Window win, XEvent *event) -+{ -+ (void) dpy; -+ (void) win; -+ -+ switch (event->type) { -+ case Expose: -+ return DRAW; -+ case ConfigureNotify: -+ reshape(event->xconfigure.width, event->xconfigure.height); -+ break; -+ case KeyPress: -+ { -+ char buffer[10]; -+ int code; -+ code = XLookupKeysym(&event->xkey, 0); -+ if (code == XK_Left) { -+ view_roty += 5.0; -+ } -+ else if (code == XK_Right) { -+ view_roty -= 5.0; -+ } -+ else if (code == XK_Up) { -+ view_rotx += 5.0; -+ } -+ else if (code == XK_Down) { -+ view_rotx -= 5.0; -+ } -+ else { -+ XLookupString(&event->xkey, buffer, sizeof(buffer), -+ NULL, NULL); -+ if (buffer[0] == 27) { -+ /* escape */ -+ return EXIT; -+ } -+ else if (buffer[0] == 'a' || buffer[0] == 'A') { -+ animate = !animate; -+ } -+ } -+ return DRAW; -+ } -+ } -+ return NOP; -+} -+ -+ -+static void -+event_loop(Display *dpy, Window win) -+{ -+ while (1) { -+ int op; -+ while (!animate || XPending(dpy) > 0) { -+ XEvent event; -+ XNextEvent(dpy, &event); -+ op = handle_event(dpy, win, &event); -+ if (op == EXIT) -+ return; -+ else if (op == DRAW) -+ break; -+ } -+ -+ draw_frame(dpy, win); -+ } -+} -+ -+ -+static void -+usage(void) -+{ -+ printf("Usage:\n"); -+ printf(" -display set the display to run on\n"); -+ printf(" -stereo run in stereo mode\n"); -+ printf(" -samples N run in multisample mode with at least N samples\n"); -+ printf(" -fullscreen run in fullscreen mode\n"); -+ printf(" -info display OpenGL renderer info\n"); -+ printf(" -geometry WxH+X+Y window geometry\n"); -+} -+ -+ -+int -+main(int argc, char *argv[]) -+{ -+ unsigned int winWidth = 300, winHeight = 300; -+ int x = 0, y = 0; -+ Display *dpy; -+ Window win; -+ GLXContext ctx; -+ char *dpyName = NULL; -+ GLboolean printInfo = GL_FALSE; -+ VisualID visId; -+ int i; -+ -+ for (i = 1; i < argc; i++) { -+ if (strcmp(argv[i], "-display") == 0) { -+ dpyName = argv[i+1]; -+ i++; -+ } -+ else if (strcmp(argv[i], "-info") == 0) { -+ printInfo = GL_TRUE; -+ } -+ else if (strcmp(argv[i], "-stereo") == 0) { -+ stereo = GL_TRUE; -+ } -+ else if (i < argc-1 && strcmp(argv[i], "-samples") == 0) { -+ samples = strtod(argv[i+1], NULL ); -+ ++i; -+ } -+ else if (strcmp(argv[i], "-fullscreen") == 0) { -+ fullscreen = GL_TRUE; -+ } -+ else if (i < argc-1 && strcmp(argv[i], "-geometry") == 0) { -+ XParseGeometry(argv[i+1], &x, &y, &winWidth, &winHeight); -+ i++; -+ } -+ else { -+ usage(); -+ return -1; -+ } -+ } -+ -+ dpy = XOpenDisplay(dpyName); -+ if (!dpy) { -+ printf("Error: couldn't open display %s\n", -+ dpyName ? dpyName : getenv("DISPLAY")); -+ return -1; -+ } -+ -+ if (fullscreen) { -+ int scrnum = DefaultScreen(dpy); -+ -+ x = 0; y = 0; -+ winWidth = DisplayWidth(dpy, scrnum); -+ winHeight = DisplayHeight(dpy, scrnum); -+ } -+ -+ make_window(dpy, "glxgears", x, y, winWidth, winHeight, &win, &ctx, &visId); -+ XMapWindow(dpy, win); -+ glXMakeCurrent(dpy, win, ctx); -+ query_vsync(dpy, win); -+ -+ if (printInfo) { -+ printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); -+ printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); -+ printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); -+ printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); -+ printf("VisualID %d, 0x%x\n", (int) visId, (int) visId); -+ } -+ -+ init(); -+ -+ /* Set initial projection/viewing transformation. -+ * We can't be sure we'll get a ConfigureNotify event when the window -+ * first appears. -+ */ -+ reshape(winWidth, winHeight); -+ -+ event_loop(dpy, win); -+ -+ glDeleteLists(gear1, 1); -+ glDeleteLists(gear2, 1); -+ glDeleteLists(gear3, 1); -+ glXMakeCurrent(dpy, None, NULL); -+ glXDestroyContext(dpy, ctx); -+ XDestroyWindow(dpy, win); -+ XCloseDisplay(dpy); -+ -+ return 0; -+} -diff -aruN old/src/glx/xdemos/glxinfo.1 new/src/glx/xdemos/glxinfo.1 ---- old/src/glx/xdemos/glxinfo.1 1970-01-01 01:00:00.000000000 +0100 -+++ new/src/glx/xdemos/glxinfo.1 2021-12-31 12:15:26.361776512 +0000 -@@ -0,0 +1,46 @@ -+.TH glxinfo 1 "2006-11-29" -+.SH NAME -+glxinfo \- show information about the GLX implementation -+.SH SYNOPSIS -+.B glxinfo -+.RI [ options ] -+.SH DESCRIPTION -+The \fIglxinfo\fP program shows information about the OpenGL and GLX -+implementations running on a given X display. -+.PP -+The information includes details about the server- and client-side GLX -+implementation, the OpenGL and GLU implementations as well as a list -+of available GLX visuals. -+.SH OPTIONS -+.TP 8 -+.B \-v -+Print visuals info in verbose form. -+.TP 8 -+.B \-t -+Print verbose table. -+.TP 8 -+.B \-display \fIdisplay\fP -+Specify the X display to interrogate. -+.TP 8 -+.B \-h -+Print usage information. -+.TP 8 -+.B \-i -+Force an indirect rendering context. -+.TP 8 -+.B \-b -+Find the "best" visual and print its number. -+.TP 8 -+.B \-l -+Print interesting OpenGL limits. -+.TP 8 -+.B \-s -+Print a single extension per line. -+.SH AUTHOR -+glxinfo was written by Brian Paul . -+.PP -+This manual page was written by Thierry Reding , for the -+Debian project and updated by Fernando de Oliveira , for the Linux From Scratch (LFS) project (but may be used by -+others). -+ -diff -aruN old/src/glx/xdemos/glxinfo.c new/src/glx/xdemos/glxinfo.c ---- old/src/glx/xdemos/glxinfo.c 1970-01-01 01:00:00.000000000 +0100 -+++ new/src/glx/xdemos/glxinfo.c 2021-12-31 12:15:26.361776512 +0000 -@@ -0,0 +1,1281 @@ -+/* -+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, including without limitation -+ * the rights to use, copy, modify, merge, publish, distribute, sublicense, -+ * and/or sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included -+ * in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+ -+/* -+ * This program is a work-alike of the IRIX glxinfo program. -+ * Command line options: -+ * -t print wide table -+ * -v print verbose information -+ * -display DisplayName specify the X display to interogate -+ * -B brief, print only the basics -+ * -b only print ID of "best" visual on screen 0 -+ * -i use indirect rendering connection only -+ * -l print interesting OpenGL limits (added 5 Sep 2002) -+ * -+ * Brian Paul 26 January 2000 -+ */ -+ -+#define GLX_GLXEXT_PROTOTYPES -+#define GL_GLEXT_PROTOTYPES -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "glinfo_common.h" -+ -+ -+#ifndef GLX_NONE_EXT -+#define GLX_NONE_EXT 0x8000 -+#endif -+ -+#ifndef GLX_TRANSPARENT_RGB -+#define GLX_TRANSPARENT_RGB 0x8008 -+#endif -+ -+#ifndef GLX_RGBA_BIT -+#define GLX_RGBA_BIT 0x00000001 -+#endif -+ -+#ifndef GLX_COLOR_INDEX_BIT -+#define GLX_COLOR_INDEX_BIT 0x00000002 -+#endif -+ -+ -+struct visual_attribs -+{ -+ /* X visual attribs */ -+ int id; /* May be visual ID or FBConfig ID */ -+ int vis_id; /* Visual ID. Only set for FBConfigs */ -+ int klass; -+ int depth; -+ int redMask, greenMask, blueMask; -+ int colormapSize; -+ int bitsPerRGB; -+ -+ /* GL visual attribs */ -+ int supportsGL; -+ int drawableType; -+ int transparentType; -+ int transparentRedValue; -+ int transparentGreenValue; -+ int transparentBlueValue; -+ int transparentAlphaValue; -+ int transparentIndexValue; -+ int bufferSize; -+ int level; -+ int render_type; -+ int doubleBuffer; -+ int stereo; -+ int auxBuffers; -+ int redSize, greenSize, blueSize, alphaSize; -+ int depthSize; -+ int stencilSize; -+ int accumRedSize, accumGreenSize, accumBlueSize, accumAlphaSize; -+ int numSamples, numMultisample; -+ int visualCaveat; -+ int floatComponents; -+ int packedfloatComponents; -+ int srgb; -+}; -+ -+ -+/** -+ * Version of the context that was created -+ * -+ * 20, 21, 30, 31, 32, etc. -+ */ -+static int version; -+ -+/** -+ * GL Error checking/warning. -+ */ -+static void -+CheckError(int line) -+{ -+ int n; -+ n = glGetError(); -+ if (n) -+ printf("Warning: GL error 0x%x at line %d\n", n, line); -+} -+ -+ -+static void -+print_display_info(Display *dpy) -+{ -+ printf("name of display: %s\n", DisplayString(dpy)); -+} -+ -+ -+/** -+ * Choose a simple FB Config. -+ */ -+static GLXFBConfig * -+choose_fb_config(Display *dpy, int scrnum) -+{ -+ int fbAttribSingle[] = { -+ GLX_RENDER_TYPE, GLX_RGBA_BIT, -+ GLX_RED_SIZE, 1, -+ GLX_GREEN_SIZE, 1, -+ GLX_BLUE_SIZE, 1, -+ GLX_DOUBLEBUFFER, False, -+ None }; -+ int fbAttribDouble[] = { -+ GLX_RENDER_TYPE, GLX_RGBA_BIT, -+ GLX_RED_SIZE, 1, -+ GLX_GREEN_SIZE, 1, -+ GLX_BLUE_SIZE, 1, -+ GLX_DOUBLEBUFFER, True, -+ None }; -+ GLXFBConfig *configs; -+ int nConfigs; -+ -+ configs = glXChooseFBConfig(dpy, scrnum, fbAttribSingle, &nConfigs); -+ if (!configs) -+ configs = glXChooseFBConfig(dpy, scrnum, fbAttribDouble, &nConfigs); -+ -+ return configs; -+} -+ -+ -+static Bool CreateContextErrorFlag; -+ -+static int -+create_context_error_handler(Display *dpy, XErrorEvent *error) -+{ -+ (void) dpy; -+ (void) error->error_code; -+ CreateContextErrorFlag = True; -+ return 0; -+} -+ -+ -+/** -+ * Try to create a GLX context of the given version with flags/options. -+ * Note: A version number is required in order to get a core profile -+ * (at least w/ NVIDIA). -+ */ -+static GLXContext -+create_context_flags(Display *dpy, GLXFBConfig fbconfig, int major, int minor, -+ int contextFlags, int profileMask, Bool direct) -+{ -+#ifdef GLX_ARB_create_context -+ static PFNGLXCREATECONTEXTATTRIBSARBPROC glXCreateContextAttribsARB_func = 0; -+ static Bool firstCall = True; -+ int (*old_handler)(Display *, XErrorEvent *); -+ GLXContext context; -+ int attribs[20]; -+ int n = 0; -+ -+ if (firstCall) { -+ /* See if we have GLX_ARB_create_context_profile and get pointer to -+ * glXCreateContextAttribsARB() function. -+ */ -+ const char *glxExt = glXQueryExtensionsString(dpy, 0); -+ if (extension_supported("GLX_ARB_create_context_profile", glxExt)) { -+ glXCreateContextAttribsARB_func = (PFNGLXCREATECONTEXTATTRIBSARBPROC) -+ glXGetProcAddress((const GLubyte *) "glXCreateContextAttribsARB"); -+ } -+ firstCall = False; -+ } -+ -+ if (!glXCreateContextAttribsARB_func) -+ return 0; -+ -+ /* setup attribute array */ -+ if (major) { -+ attribs[n++] = GLX_CONTEXT_MAJOR_VERSION_ARB; -+ attribs[n++] = major; -+ attribs[n++] = GLX_CONTEXT_MINOR_VERSION_ARB; -+ attribs[n++] = minor; -+ } -+ if (contextFlags) { -+ attribs[n++] = GLX_CONTEXT_FLAGS_ARB; -+ attribs[n++] = contextFlags; -+ } -+#ifdef GLX_ARB_create_context_profile -+ if (profileMask) { -+ attribs[n++] = GLX_CONTEXT_PROFILE_MASK_ARB; -+ attribs[n++] = profileMask; -+ } -+#endif -+ attribs[n++] = 0; -+ -+ /* install X error handler */ -+ old_handler = XSetErrorHandler(create_context_error_handler); -+ CreateContextErrorFlag = False; -+ -+ /* try creating context */ -+ context = glXCreateContextAttribsARB_func(dpy, -+ fbconfig, -+ 0, /* share_context */ -+ direct, -+ attribs); -+ -+ /* restore error handler */ -+ XSetErrorHandler(old_handler); -+ -+ if (CreateContextErrorFlag) -+ context = 0; -+ -+ if (context && direct) { -+ if (!glXIsDirect(dpy, context)) { -+ glXDestroyContext(dpy, context); -+ return 0; -+ } -+ } -+ -+ return context; -+#else -+ return 0; -+#endif -+} -+ -+ -+/** -+ * Try to create a GLX context of the newest version. -+ */ -+static GLXContext -+create_context_with_config(Display *dpy, GLXFBConfig config, -+ Bool coreProfile, Bool es2Profile, Bool direct) -+{ -+ GLXContext ctx = 0; -+ -+ if (coreProfile) { -+ /* Try to create a core profile, starting with the newest version of -+ * GL that we're aware of. If we don't specify the version -+ */ -+ int i; -+ for (i = 0; gl_versions[i].major > 0; i++) { -+ /* don't bother below GL 3.0 */ -+ if (gl_versions[i].major == 3 && -+ gl_versions[i].minor == 0) -+ return 0; -+ ctx = create_context_flags(dpy, config, -+ gl_versions[i].major, -+ gl_versions[i].minor, -+ 0x0, -+ GLX_CONTEXT_CORE_PROFILE_BIT_ARB, -+ direct); -+ if (ctx) -+ return ctx; -+ } -+ /* couldn't get core profile context */ -+ return 0; -+ } -+ -+ if (es2Profile) { -+#ifdef GLX_CONTEXT_ES2_PROFILE_BIT_EXT -+ if (extension_supported("GLX_EXT_create_context_es2_profile", -+ glXQueryExtensionsString(dpy, 0))) { -+ ctx = create_context_flags(dpy, config, 2, 0, 0x0, -+ GLX_CONTEXT_ES2_PROFILE_BIT_EXT, -+ direct); -+ return ctx; -+ } -+#endif -+ return 0; -+ } -+ -+ /* GLX should return a context of the latest GL version that supports -+ * the full profile. -+ */ -+ ctx = glXCreateNewContext(dpy, config, GLX_RGBA_TYPE, NULL, direct); -+ -+ /* make sure the context is direct, if direct was requested */ -+ if (ctx && direct) { -+ if (!glXIsDirect(dpy, ctx)) { -+ glXDestroyContext(dpy, ctx); -+ return 0; -+ } -+ } -+ -+ return ctx; -+} -+ -+ -+static XVisualInfo * -+choose_xvisinfo(Display *dpy, int scrnum) -+{ -+ int attribSingle[] = { -+ GLX_RGBA, -+ GLX_RED_SIZE, 1, -+ GLX_GREEN_SIZE, 1, -+ GLX_BLUE_SIZE, 1, -+ None }; -+ int attribDouble[] = { -+ GLX_RGBA, -+ GLX_RED_SIZE, 1, -+ GLX_GREEN_SIZE, 1, -+ GLX_BLUE_SIZE, 1, -+ GLX_DOUBLEBUFFER, -+ None }; -+ XVisualInfo *visinfo; -+ -+ visinfo = glXChooseVisual(dpy, scrnum, attribSingle); -+ if (!visinfo) -+ visinfo = glXChooseVisual(dpy, scrnum, attribDouble); -+ -+ return visinfo; -+} -+ -+ -+static void -+query_renderer(void) -+{ -+#ifdef GLX_MESA_query_renderer -+ PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC queryInteger; -+ PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC queryString; -+ unsigned int v[3]; -+ -+ queryInteger = (PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC) -+ glXGetProcAddressARB((const GLubyte *) -+ "glXQueryCurrentRendererIntegerMESA"); -+ queryString = (PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC) -+ glXGetProcAddressARB((const GLubyte *) -+ "glXQueryCurrentRendererStringMESA"); -+ -+ printf("Extended renderer info (GLX_MESA_query_renderer):\n"); -+ queryInteger(GLX_RENDERER_VENDOR_ID_MESA, v); -+ printf(" Vendor: %s (0x%x)\n", -+ queryString(GLX_RENDERER_VENDOR_ID_MESA), *v); -+ queryInteger(GLX_RENDERER_DEVICE_ID_MESA, v); -+ printf(" Device: %s (0x%x)\n", -+ queryString(GLX_RENDERER_DEVICE_ID_MESA), *v); -+ queryInteger(GLX_RENDERER_VERSION_MESA, v); -+ printf(" Version: %d.%d.%d\n", v[0], v[1], v[2]); -+ queryInteger(GLX_RENDERER_ACCELERATED_MESA, v); -+ printf(" Accelerated: %s\n", *v ? "yes" : "no"); -+ queryInteger(GLX_RENDERER_VIDEO_MEMORY_MESA, v); -+ printf(" Video memory: %dMB\n", *v); -+ queryInteger(GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA, v); -+ printf(" Unified memory: %s\n", *v ? "yes" : "no"); -+ queryInteger(GLX_RENDERER_PREFERRED_PROFILE_MESA, v); -+ printf(" Preferred profile: %s (0x%x)\n", -+ *v == GLX_CONTEXT_CORE_PROFILE_BIT_ARB ? "core" : -+ *v == GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB ? "compat" : -+ "unknown", *v); -+ queryInteger(GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA, v); -+ printf(" Max core profile version: %d.%d\n", v[0], v[1]); -+ queryInteger(GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA, v); -+ printf(" Max compat profile version: %d.%d\n", v[0], v[1]); -+ queryInteger(GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA, v); -+ printf(" Max GLES1 profile version: %d.%d\n", v[0], v[1]); -+ queryInteger(GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA, v); -+ printf(" Max GLES[23] profile version: %d.%d\n", v[0], v[1]); -+#endif -+} -+ -+ -+static Bool -+print_screen_info(Display *dpy, int scrnum, -+ const struct options *opts, -+ Bool coreProfile, Bool es2Profile, Bool limits, -+ Bool coreWorked) -+{ -+ Window win; -+ XSetWindowAttributes attr; -+ unsigned long mask; -+ Window root; -+ GLXContext ctx = NULL; -+ XVisualInfo *visinfo; -+ int width = 100, height = 100; -+ GLXFBConfig *fbconfigs; -+ const char *oglstring = coreProfile ? "OpenGL core profile" : -+ es2Profile ? "OpenGL ES profile" : "OpenGL"; -+ -+ root = RootWindow(dpy, scrnum); -+ -+ /* -+ * Choose FBConfig or XVisualInfo and create a context. -+ */ -+ fbconfigs = choose_fb_config(dpy, scrnum); -+ if (fbconfigs) { -+ ctx = create_context_with_config(dpy, fbconfigs[0], -+ coreProfile, es2Profile, -+ opts->allowDirect); -+ if (!ctx && opts->allowDirect && !coreProfile) { -+ /* try indirect */ -+ ctx = create_context_with_config(dpy, fbconfigs[0], -+ coreProfile, es2Profile, False); -+ } -+ -+ visinfo = glXGetVisualFromFBConfig(dpy, fbconfigs[0]); -+ XFree(fbconfigs); -+ } -+ else if (!coreProfile && !es2Profile) { -+ visinfo = choose_xvisinfo(dpy, scrnum); -+ if (visinfo) -+ ctx = glXCreateContext(dpy, visinfo, NULL, opts->allowDirect); -+ } else -+ visinfo = NULL; -+ -+ if (!visinfo && !coreProfile && !es2Profile) { -+ fprintf(stderr, "Error: couldn't find RGB GLX visual or fbconfig\n"); -+ return False; -+ } -+ -+ if (!ctx) { -+ if (!coreProfile && !es2Profile) -+ fprintf(stderr, "Error: glXCreateContext failed\n"); -+ XFree(visinfo); -+ return False; -+ } -+ -+ /* -+ * Create a window so that we can just bind the context. -+ */ -+ attr.background_pixel = 0; -+ attr.border_pixel = 0; -+ attr.colormap = XCreateColormap(dpy, root, visinfo->visual, AllocNone); -+ attr.event_mask = StructureNotifyMask | ExposureMask; -+ mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; -+ win = XCreateWindow(dpy, root, 0, 0, width, height, -+ 0, visinfo->depth, InputOutput, -+ visinfo->visual, mask, &attr); -+ -+ if (glXMakeCurrent(dpy, win, ctx)) { -+ const char *serverVendor = glXQueryServerString(dpy, scrnum, GLX_VENDOR); -+ const char *serverVersion = glXQueryServerString(dpy, scrnum, GLX_VERSION); -+ const char *serverExtensions = glXQueryServerString(dpy, scrnum, GLX_EXTENSIONS); -+ const char *clientVendor = glXGetClientString(dpy, GLX_VENDOR); -+ const char *clientVersion = glXGetClientString(dpy, GLX_VERSION); -+ const char *clientExtensions = glXGetClientString(dpy, GLX_EXTENSIONS); -+ const char *glxExtensions = glXQueryExtensionsString(dpy, scrnum); -+ const char *glVendor = (const char *) glGetString(GL_VENDOR); -+ const char *glRenderer = (const char *) glGetString(GL_RENDERER); -+ const char *glVersion = (const char *) glGetString(GL_VERSION); -+ char *glExtensions = NULL; -+ int glxVersionMajor = 0; -+ int glxVersionMinor = 0; -+ char *displayName = NULL; -+ char *colon = NULL, *period = NULL; -+ struct ext_functions extfuncs; -+ -+ CheckError(__LINE__); -+ -+ /* Get some ext functions */ -+ extfuncs.GetProgramivARB = (GETPROGRAMIVARBPROC) -+ glXGetProcAddressARB((GLubyte *) "glGetProgramivARB"); -+ extfuncs.GetStringi = (GETSTRINGIPROC) -+ glXGetProcAddressARB((GLubyte *) "glGetStringi"); -+ extfuncs.GetConvolutionParameteriv = (GETCONVOLUTIONPARAMETERIVPROC) -+ glXGetProcAddressARB((GLubyte *) "glGetConvolutionParameteriv"); -+ -+ if (!glXQueryVersion(dpy, & glxVersionMajor, & glxVersionMinor)) { -+ fprintf(stderr, "Error: glXQueryVersion failed\n"); -+ exit(1); -+ } -+ -+ /* Get list of GL extensions */ -+ if (coreProfile && extfuncs.GetStringi) -+ glExtensions = build_core_profile_extension_list(&extfuncs); -+ if (!glExtensions) { -+ coreProfile = False; -+ glExtensions = (char *) glGetString(GL_EXTENSIONS); -+ } -+ -+ CheckError(__LINE__); -+ -+ if (!coreWorked) { -+ /* Strip the screen number from the display name, if present. */ -+ if (!(displayName = (char *) malloc(strlen(DisplayString(dpy)) + 1))) { -+ fprintf(stderr, "Error: malloc() failed\n"); -+ exit(1); -+ } -+ strcpy(displayName, DisplayString(dpy)); -+ colon = strrchr(displayName, ':'); -+ if (colon) { -+ period = strchr(colon, '.'); -+ if (period) -+ *period = '\0'; -+ } -+ -+ printf("display: %s screen: %d\n", displayName, scrnum); -+ free(displayName); -+ printf("direct rendering: "); -+ if (glXIsDirect(dpy, ctx)) { -+ printf("Yes\n"); -+ } -+ else { -+ if (!opts->allowDirect) { -+ printf("No (-i specified)\n"); -+ } -+ else if (getenv("LIBGL_ALWAYS_INDIRECT")) { -+ printf("No (LIBGL_ALWAYS_INDIRECT set)\n"); -+ } -+ else { -+ printf("No (If you want to find out why, try setting " -+ "LIBGL_DEBUG=verbose)\n"); -+ } -+ } -+ if (opts->mode != Brief) { -+ printf("server glx vendor string: %s\n", serverVendor); -+ printf("server glx version string: %s\n", serverVersion); -+ printf("server glx extensions:\n"); -+ print_extension_list(serverExtensions, opts->singleLine); -+ printf("client glx vendor string: %s\n", clientVendor); -+ printf("client glx version string: %s\n", clientVersion); -+ printf("client glx extensions:\n"); -+ print_extension_list(clientExtensions, opts->singleLine); -+ printf("GLX version: %u.%u\n", glxVersionMajor, glxVersionMinor); -+ printf("GLX extensions:\n"); -+ print_extension_list(glxExtensions, opts->singleLine); -+ } -+ if (strstr(glxExtensions, "GLX_MESA_query_renderer")) -+ query_renderer(); -+ printf("OpenGL vendor string: %s\n", glVendor); -+ printf("OpenGL renderer string: %s\n", glRenderer); -+ } else -+ printf("\n"); -+ -+ printf("%s version string: %s\n", oglstring, glVersion); -+ -+ version = (glVersion[0] - '0') * 10 + (glVersion[2] - '0'); -+ -+ CheckError(__LINE__); -+ -+#ifdef GL_VERSION_2_0 -+ if (version >= 20) { -+ char *v = (char *) glGetString(GL_SHADING_LANGUAGE_VERSION); -+ printf("%s shading language version string: %s\n", oglstring, v); -+ } -+#endif -+ CheckError(__LINE__); -+#ifdef GL_VERSION_3_0 -+ if (version >= 30 && !es2Profile) { -+ GLint flags; -+ glGetIntegerv(GL_CONTEXT_FLAGS, &flags); -+ printf("%s context flags: %s\n", oglstring, context_flags_string(flags)); -+ } -+#endif -+ CheckError(__LINE__); -+#ifdef GL_VERSION_3_2 -+ if (version >= 32 && !es2Profile) { -+ GLint mask; -+ glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &mask); -+ printf("%s profile mask: %s\n", oglstring, profile_mask_string(mask)); -+ } -+#endif -+ -+ CheckError(__LINE__); -+ -+ if (opts->mode != Brief) { -+ printf("%s extensions:\n", oglstring); -+ print_extension_list(glExtensions, opts->singleLine); -+ } -+ -+ if (limits) { -+ print_limits(glExtensions, oglstring, version, &extfuncs); -+ } -+ -+ if (coreProfile) -+ free(glExtensions); -+ } -+ else { -+ fprintf(stderr, "Error: glXMakeCurrent failed\n"); -+ } -+ -+ glXDestroyContext(dpy, ctx); -+ XFree(visinfo); -+ XDestroyWindow(dpy, win); -+ XSync(dpy, 1); -+ return True; -+} -+ -+ -+static const char * -+visual_class_name(int cls) -+{ -+ switch (cls) { -+ case StaticColor: -+ return "StaticColor"; -+ case PseudoColor: -+ return "PseudoColor"; -+ case StaticGray: -+ return "StaticGray"; -+ case GrayScale: -+ return "GrayScale"; -+ case TrueColor: -+ return "TrueColor"; -+ case DirectColor: -+ return "DirectColor"; -+ default: -+ return ""; -+ } -+} -+ -+static const char * -+visual_drawable_type(int type) -+{ -+ const static struct bit_info bits[] = { -+ { GLX_WINDOW_BIT, "window" }, -+ { GLX_PIXMAP_BIT, "pixmap" }, -+ { GLX_PBUFFER_BIT, "pbuffer" } -+ }; -+ -+ return bitmask_to_string(bits, ELEMENTS(bits), type); -+} -+ -+static const char * -+visual_class_abbrev(int cls) -+{ -+ switch (cls) { -+ case StaticColor: -+ return "sc"; -+ case PseudoColor: -+ return "pc"; -+ case StaticGray: -+ return "sg"; -+ case GrayScale: -+ return "gs"; -+ case TrueColor: -+ return "tc"; -+ case DirectColor: -+ return "dc"; -+ default: -+ return ""; -+ } -+} -+ -+static const char * -+visual_render_type_name(int type) -+{ -+ switch (type) { -+ case GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT: -+ return "ufloat"; -+ case GLX_RGBA_FLOAT_BIT_ARB: -+ return "float"; -+ case GLX_RGBA_BIT: -+ return "rgba"; -+ case GLX_COLOR_INDEX_BIT: -+ return "ci"; -+ case GLX_RGBA_BIT | GLX_COLOR_INDEX_BIT: -+ return "rgba|ci"; -+ default: -+ return ""; -+ } -+} -+ -+static const char * -+caveat_string(int caveat) -+{ -+ switch (caveat) { -+#ifdef GLX_EXT_visual_rating -+ case GLX_SLOW_VISUAL_EXT: -+ return "Slow"; -+ case GLX_NON_CONFORMANT_VISUAL_EXT: -+ return "Ncon"; -+ case GLX_NONE_EXT: -+ /* fall-through */ -+#endif -+ case 0: -+ /* fall-through */ -+ default: -+ return "None"; -+ } -+} -+ -+ -+static Bool -+get_visual_attribs(Display *dpy, XVisualInfo *vInfo, -+ struct visual_attribs *attribs) -+{ -+ const char *ext = glXQueryExtensionsString(dpy, vInfo->screen); -+ int rgba; -+ -+ memset(attribs, 0, sizeof(struct visual_attribs)); -+ -+ attribs->id = vInfo->visualid; -+#if defined(__cplusplus) || defined(c_plusplus) -+ attribs->klass = vInfo->c_class; -+#else -+ attribs->klass = vInfo->class; -+#endif -+ attribs->depth = vInfo->depth; -+ attribs->redMask = vInfo->red_mask; -+ attribs->greenMask = vInfo->green_mask; -+ attribs->blueMask = vInfo->blue_mask; -+ attribs->colormapSize = vInfo->colormap_size; -+ attribs->bitsPerRGB = vInfo->bits_per_rgb; -+ -+ if (glXGetConfig(dpy, vInfo, GLX_USE_GL, &attribs->supportsGL) != 0 || -+ !attribs->supportsGL) -+ return False; -+ glXGetConfig(dpy, vInfo, GLX_BUFFER_SIZE, &attribs->bufferSize); -+ glXGetConfig(dpy, vInfo, GLX_LEVEL, &attribs->level); -+ glXGetConfig(dpy, vInfo, GLX_RGBA, &rgba); -+ if (rgba) -+ attribs->render_type = GLX_RGBA_BIT; -+ else -+ attribs->render_type = GLX_COLOR_INDEX_BIT; -+ -+ glXGetConfig(dpy, vInfo, GLX_DRAWABLE_TYPE, &attribs->drawableType); -+ glXGetConfig(dpy, vInfo, GLX_DOUBLEBUFFER, &attribs->doubleBuffer); -+ glXGetConfig(dpy, vInfo, GLX_STEREO, &attribs->stereo); -+ glXGetConfig(dpy, vInfo, GLX_AUX_BUFFERS, &attribs->auxBuffers); -+ glXGetConfig(dpy, vInfo, GLX_RED_SIZE, &attribs->redSize); -+ glXGetConfig(dpy, vInfo, GLX_GREEN_SIZE, &attribs->greenSize); -+ glXGetConfig(dpy, vInfo, GLX_BLUE_SIZE, &attribs->blueSize); -+ glXGetConfig(dpy, vInfo, GLX_ALPHA_SIZE, &attribs->alphaSize); -+ glXGetConfig(dpy, vInfo, GLX_DEPTH_SIZE, &attribs->depthSize); -+ glXGetConfig(dpy, vInfo, GLX_STENCIL_SIZE, &attribs->stencilSize); -+ glXGetConfig(dpy, vInfo, GLX_ACCUM_RED_SIZE, &attribs->accumRedSize); -+ glXGetConfig(dpy, vInfo, GLX_ACCUM_GREEN_SIZE, &attribs->accumGreenSize); -+ glXGetConfig(dpy, vInfo, GLX_ACCUM_BLUE_SIZE, &attribs->accumBlueSize); -+ glXGetConfig(dpy, vInfo, GLX_ACCUM_ALPHA_SIZE, &attribs->accumAlphaSize); -+ -+ /* get transparent pixel stuff */ -+ glXGetConfig(dpy, vInfo,GLX_TRANSPARENT_TYPE, &attribs->transparentType); -+ if (attribs->transparentType == GLX_TRANSPARENT_RGB) { -+ glXGetConfig(dpy, vInfo, GLX_TRANSPARENT_RED_VALUE, &attribs->transparentRedValue); -+ glXGetConfig(dpy, vInfo, GLX_TRANSPARENT_GREEN_VALUE, &attribs->transparentGreenValue); -+ glXGetConfig(dpy, vInfo, GLX_TRANSPARENT_BLUE_VALUE, &attribs->transparentBlueValue); -+ glXGetConfig(dpy, vInfo, GLX_TRANSPARENT_ALPHA_VALUE, &attribs->transparentAlphaValue); -+ } -+ else if (attribs->transparentType == GLX_TRANSPARENT_INDEX) { -+ glXGetConfig(dpy, vInfo, GLX_TRANSPARENT_INDEX_VALUE, &attribs->transparentIndexValue); -+ } -+ -+ /* multisample attribs */ -+#ifdef GLX_ARB_multisample -+ if (ext && strstr(ext, "GLX_ARB_multisample")) { -+ glXGetConfig(dpy, vInfo, GLX_SAMPLE_BUFFERS_ARB, &attribs->numMultisample); -+ glXGetConfig(dpy, vInfo, GLX_SAMPLES_ARB, &attribs->numSamples); -+ } -+#endif -+ else { -+ attribs->numSamples = 0; -+ attribs->numMultisample = 0; -+ } -+ -+#if defined(GLX_EXT_visual_rating) -+ if (ext && strstr(ext, "GLX_EXT_visual_rating")) { -+ glXGetConfig(dpy, vInfo, GLX_VISUAL_CAVEAT_EXT, &attribs->visualCaveat); -+ } -+ else { -+ attribs->visualCaveat = GLX_NONE_EXT; -+ } -+#else -+ attribs->visualCaveat = 0; -+#endif -+ -+#if defined(GLX_EXT_framebuffer_sRGB) -+ if (ext && strstr(ext, "GLX_EXT_framebuffer_sRGB")) { -+ glXGetConfig(dpy, vInfo, GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT, &attribs->srgb); -+ } -+#endif -+ -+ return True; -+} -+ -+#ifdef GLX_VERSION_1_3 -+ -+static int -+glx_token_to_visual_class(int visual_type) -+{ -+ switch (visual_type) { -+ case GLX_TRUE_COLOR: -+ return TrueColor; -+ case GLX_DIRECT_COLOR: -+ return DirectColor; -+ case GLX_PSEUDO_COLOR: -+ return PseudoColor; -+ case GLX_STATIC_COLOR: -+ return StaticColor; -+ case GLX_GRAY_SCALE: -+ return GrayScale; -+ case GLX_STATIC_GRAY: -+ return StaticGray; -+ case GLX_NONE: -+ default: -+ return None; -+ } -+} -+ -+static Bool -+get_fbconfig_attribs(Display *dpy, GLXFBConfig fbconfig, -+ struct visual_attribs *attribs) -+{ -+ const char *ext = glXQueryExtensionsString(dpy, 0); -+ int visual_type; -+ XVisualInfo *vInfo; -+ -+ memset(attribs, 0, sizeof(struct visual_attribs)); -+ -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_FBCONFIG_ID, &attribs->id); -+ -+ vInfo = glXGetVisualFromFBConfig(dpy, fbconfig); -+ -+ if (vInfo != NULL) { -+ attribs->vis_id = vInfo->visualid; -+ attribs->depth = vInfo->depth; -+ attribs->redMask = vInfo->red_mask; -+ attribs->greenMask = vInfo->green_mask; -+ attribs->blueMask = vInfo->blue_mask; -+ attribs->colormapSize = vInfo->colormap_size; -+ attribs->bitsPerRGB = vInfo->bits_per_rgb; -+ } -+ -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_X_VISUAL_TYPE, &visual_type); -+ attribs->klass = glx_token_to_visual_class(visual_type); -+ -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_DRAWABLE_TYPE, &attribs->drawableType); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_BUFFER_SIZE, &attribs->bufferSize); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_LEVEL, &attribs->level); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_RENDER_TYPE, &attribs->render_type); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_DOUBLEBUFFER, &attribs->doubleBuffer); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_STEREO, &attribs->stereo); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_AUX_BUFFERS, &attribs->auxBuffers); -+ -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_RED_SIZE, &attribs->redSize); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_GREEN_SIZE, &attribs->greenSize); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_BLUE_SIZE, &attribs->blueSize); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_ALPHA_SIZE, &attribs->alphaSize); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_DEPTH_SIZE, &attribs->depthSize); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_STENCIL_SIZE, &attribs->stencilSize); -+ -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_ACCUM_RED_SIZE, &attribs->accumRedSize); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_ACCUM_GREEN_SIZE, &attribs->accumGreenSize); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_ACCUM_BLUE_SIZE, &attribs->accumBlueSize); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_ACCUM_ALPHA_SIZE, &attribs->accumAlphaSize); -+ -+ /* get transparent pixel stuff */ -+ glXGetFBConfigAttrib(dpy, fbconfig,GLX_TRANSPARENT_TYPE, &attribs->transparentType); -+ if (attribs->transparentType == GLX_TRANSPARENT_RGB) { -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_TRANSPARENT_RED_VALUE, &attribs->transparentRedValue); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_TRANSPARENT_GREEN_VALUE, &attribs->transparentGreenValue); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_TRANSPARENT_BLUE_VALUE, &attribs->transparentBlueValue); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_TRANSPARENT_ALPHA_VALUE, &attribs->transparentAlphaValue); -+ } -+ else if (attribs->transparentType == GLX_TRANSPARENT_INDEX) { -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_TRANSPARENT_INDEX_VALUE, &attribs->transparentIndexValue); -+ } -+ -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_SAMPLE_BUFFERS, &attribs->numMultisample); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_SAMPLES, &attribs->numSamples); -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_CONFIG_CAVEAT, &attribs->visualCaveat); -+ -+#if defined(GLX_NV_float_buffer) -+ if (ext && strstr(ext, "GLX_NV_float_buffer")) { -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_FLOAT_COMPONENTS_NV, &attribs->floatComponents); -+ } -+#endif -+#if defined(GLX_ARB_fbconfig_float) -+ if (ext && strstr(ext, "GLX_ARB_fbconfig_float")) { -+ if (attribs->render_type & GLX_RGBA_FLOAT_BIT_ARB) { -+ attribs->floatComponents = True; -+ } -+ } -+#endif -+#if defined(GLX_EXT_fbconfig_packed_float) -+ if (ext && strstr(ext, "GLX_EXT_fbconfig_packed_float")) { -+ if (attribs->render_type & GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT) { -+ attribs->packedfloatComponents = True; -+ } -+ } -+#endif -+ -+#if defined(GLX_EXT_framebuffer_sRGB) -+ if (ext && strstr(ext, "GLX_EXT_framebuffer_sRGB")) { -+ glXGetFBConfigAttrib(dpy, fbconfig, GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT, &attribs->srgb); -+ } -+#endif -+ return True; -+} -+ -+#endif -+ -+ -+ -+static void -+print_visual_attribs_verbose(const struct visual_attribs *attribs, -+ int fbconfigs) -+{ -+ if (fbconfigs) { -+ printf("FBConfig ID: %x Visual ID=%x depth=%d class=%s, type=%s\n", -+ attribs->id, attribs->vis_id, attribs->depth, -+ visual_class_name(attribs->klass), -+ visual_drawable_type(attribs->drawableType)); -+ } -+ else { -+ printf("Visual ID: %x depth=%d class=%s, type=%s\n", -+ attribs->id, attribs->depth, visual_class_name(attribs->klass), -+ visual_drawable_type(attribs->drawableType)); -+ } -+ printf(" bufferSize=%d level=%d renderType=%s doubleBuffer=%d stereo=%d\n", -+ attribs->bufferSize, attribs->level, -+ visual_render_type_name(attribs->render_type), -+ attribs->doubleBuffer, attribs->stereo); -+ printf(" rgba: redSize=%d greenSize=%d blueSize=%d alphaSize=%d float=%c sRGB=%c\n", -+ attribs->redSize, attribs->greenSize, -+ attribs->blueSize, attribs->alphaSize, -+ attribs->packedfloatComponents ? 'P' : attribs->floatComponents ? 'Y' : 'N', -+ attribs->srgb ? 'Y' : 'N'); -+ printf(" auxBuffers=%d depthSize=%d stencilSize=%d\n", -+ attribs->auxBuffers, attribs->depthSize, attribs->stencilSize); -+ printf(" accum: redSize=%d greenSize=%d blueSize=%d alphaSize=%d\n", -+ attribs->accumRedSize, attribs->accumGreenSize, -+ attribs->accumBlueSize, attribs->accumAlphaSize); -+ printf(" multiSample=%d multiSampleBuffers=%d\n", -+ attribs->numSamples, attribs->numMultisample); -+#ifdef GLX_EXT_visual_rating -+ if (attribs->visualCaveat == GLX_NONE_EXT || attribs->visualCaveat == 0) -+ printf(" visualCaveat=None\n"); -+ else if (attribs->visualCaveat == GLX_SLOW_VISUAL_EXT) -+ printf(" visualCaveat=Slow\n"); -+ else if (attribs->visualCaveat == GLX_NON_CONFORMANT_VISUAL_EXT) -+ printf(" visualCaveat=Nonconformant\n"); -+#endif -+ if (attribs->transparentType == GLX_NONE) { -+ printf(" Opaque.\n"); -+ } -+ else if (attribs->transparentType == GLX_TRANSPARENT_RGB) { -+ printf(" Transparent RGB: Red=%d Green=%d Blue=%d Alpha=%d\n",attribs->transparentRedValue,attribs->transparentGreenValue,attribs->transparentBlueValue,attribs->transparentAlphaValue); -+ } -+ else if (attribs->transparentType == GLX_TRANSPARENT_INDEX) { -+ printf(" Transparent index=%d\n",attribs->transparentIndexValue); -+ } -+} -+ -+ -+static void -+print_visual_attribs_short_header(void) -+{ -+ printf(" visual x bf lv rg d st colorbuffer sr ax dp st accumbuffer ms cav\n"); -+ printf(" id dep cl sp sz l ci b ro r g b a F gb bf th cl r g b a ns b eat\n"); -+ printf("----------------------------------------------------------------------------\n"); -+} -+ -+ -+static void -+print_visual_attribs_short(const struct visual_attribs *attribs) -+{ -+ const char *caveat = caveat_string(attribs->visualCaveat); -+ -+ printf("0x%03x %2d %2s %2d %3d %2d %c%c %c %c %2d %2d %2d %2d %c %c %2d %2d %2d", -+ attribs->id, -+ attribs->depth, -+ visual_class_abbrev(attribs->klass), -+ attribs->transparentType != GLX_NONE, -+ attribs->bufferSize, -+ attribs->level, -+ (attribs->render_type & GLX_RGBA_BIT) ? 'r' : ' ', -+ (attribs->render_type & GLX_COLOR_INDEX_BIT) ? 'c' : ' ', -+ attribs->doubleBuffer ? 'y' : '.', -+ attribs->stereo ? 'y' : '.', -+ attribs->redSize, attribs->greenSize, -+ attribs->blueSize, attribs->alphaSize, -+ attribs->packedfloatComponents ? 'u' : attribs->floatComponents ? 'f' : '.', -+ attribs->srgb ? 's' : '.', -+ attribs->auxBuffers, -+ attribs->depthSize, -+ attribs->stencilSize -+ ); -+ -+ printf(" %2d %2d %2d %2d %2d %1d %s\n", -+ attribs->accumRedSize, attribs->accumGreenSize, -+ attribs->accumBlueSize, attribs->accumAlphaSize, -+ attribs->numSamples, attribs->numMultisample, -+ caveat -+ ); -+} -+ -+ -+static void -+print_visual_attribs_long_header(void) -+{ -+ printf("Vis Vis Visual Trans buff lev render DB ste r g b a s aux dep ste accum buffer MS MS \n"); -+ printf(" ID Depth Type parent size el type reo sz sz sz sz flt rgb buf th ncl r g b a num bufs caveats\n"); -+ printf("--------------------------------------------------------------------------------------------------------------------\n"); -+} -+ -+ -+static void -+print_visual_attribs_long(const struct visual_attribs *attribs) -+{ -+ const char *caveat = caveat_string(attribs->visualCaveat); -+ -+ printf("0x%3x %2d %-11s %2d %3d %2d %4s %3d %3d %3d %3d %3d %3d", -+ attribs->id, -+ attribs->depth, -+ visual_class_name(attribs->klass), -+ attribs->transparentType != GLX_NONE, -+ attribs->bufferSize, -+ attribs->level, -+ visual_render_type_name(attribs->render_type), -+ attribs->doubleBuffer, -+ attribs->stereo, -+ attribs->redSize, attribs->greenSize, -+ attribs->blueSize, attribs->alphaSize -+ ); -+ -+ printf(" %c %c %3d %4d %2d %3d %3d %3d %3d %2d %2d %6s\n", -+ attribs->floatComponents ? 'f' : '.', -+ attribs->srgb ? 's' : '.', -+ attribs->auxBuffers, -+ attribs->depthSize, -+ attribs->stencilSize, -+ attribs->accumRedSize, attribs->accumGreenSize, -+ attribs->accumBlueSize, attribs->accumAlphaSize, -+ attribs->numSamples, attribs->numMultisample, -+ caveat -+ ); -+} -+ -+ -+static void -+print_visual_info(Display *dpy, int scrnum, InfoMode mode) -+{ -+ XVisualInfo theTemplate; -+ XVisualInfo *visuals; -+ int numVisuals, numGlxVisuals; -+ long mask; -+ int i; -+ struct visual_attribs attribs; -+ -+ /* get list of all visuals on this screen */ -+ theTemplate.screen = scrnum; -+ mask = VisualScreenMask; -+ visuals = XGetVisualInfo(dpy, mask, &theTemplate, &numVisuals); -+ -+ numGlxVisuals = 0; -+ for (i = 0; i < numVisuals; i++) { -+ if (get_visual_attribs(dpy, &visuals[i], &attribs)) -+ numGlxVisuals++; -+ } -+ -+ if (numGlxVisuals == 0) -+ return; -+ -+ printf("%d GLX Visuals\n", numGlxVisuals); -+ -+ if (mode == Normal) -+ print_visual_attribs_short_header(); -+ else if (mode == Wide) -+ print_visual_attribs_long_header(); -+ -+ for (i = 0; i < numVisuals; i++) { -+ if (!get_visual_attribs(dpy, &visuals[i], &attribs)) -+ continue; -+ -+ if (mode == Verbose) -+ print_visual_attribs_verbose(&attribs, False); -+ else if (mode == Normal) -+ print_visual_attribs_short(&attribs); -+ else if (mode == Wide) -+ print_visual_attribs_long(&attribs); -+ } -+ printf("\n"); -+ -+ XFree(visuals); -+} -+ -+#ifdef GLX_VERSION_1_3 -+ -+static void -+print_fbconfig_info(Display *dpy, int scrnum, InfoMode mode) -+{ -+ int numFBConfigs = 0; -+ struct visual_attribs attribs; -+ GLXFBConfig *fbconfigs; -+ int i; -+ -+ /* get list of all fbconfigs on this screen */ -+ fbconfigs = glXGetFBConfigs(dpy, scrnum, &numFBConfigs); -+ -+ if (numFBConfigs == 0) { -+ XFree(fbconfigs); -+ return; -+ } -+ -+ printf("%d GLXFBConfigs:\n", numFBConfigs); -+ if (mode == Normal) -+ print_visual_attribs_short_header(); -+ else if (mode == Wide) -+ print_visual_attribs_long_header(); -+ -+ for (i = 0; i < numFBConfigs; i++) { -+ get_fbconfig_attribs(dpy, fbconfigs[i], &attribs); -+ -+ if (mode == Verbose) -+ print_visual_attribs_verbose(&attribs, True); -+ else if (mode == Normal) -+ print_visual_attribs_short(&attribs); -+ else if (mode == Wide) -+ print_visual_attribs_long(&attribs); -+ } -+ printf("\n"); -+ -+ XFree(fbconfigs); -+} -+ -+#endif -+ -+/* -+ * Stand-alone Mesa doesn't really implement the GLX protocol so it -+ * doesn't really know the GLX attributes associated with an X visual. -+ * The first time a visual is presented to Mesa's pseudo-GLX it -+ * attaches ancilliary buffers to it (like depth and stencil). -+ * But that usually only works if glXChooseVisual is used. -+ * This function calls glXChooseVisual() to sort of "prime the pump" -+ * for Mesa's GLX so that the visuals that get reported actually -+ * reflect what applications will see. -+ * This has no effect when using true GLX. -+ */ -+static void -+mesa_hack(Display *dpy, int scrnum) -+{ -+ static int attribs[] = { -+ GLX_RGBA, -+ GLX_RED_SIZE, 1, -+ GLX_GREEN_SIZE, 1, -+ GLX_BLUE_SIZE, 1, -+ GLX_DEPTH_SIZE, 1, -+ GLX_STENCIL_SIZE, 1, -+ GLX_ACCUM_RED_SIZE, 1, -+ GLX_ACCUM_GREEN_SIZE, 1, -+ GLX_ACCUM_BLUE_SIZE, 1, -+ GLX_ACCUM_ALPHA_SIZE, 1, -+ GLX_DOUBLEBUFFER, -+ None -+ }; -+ XVisualInfo *visinfo; -+ -+ visinfo = glXChooseVisual(dpy, scrnum, attribs); -+ if (visinfo) -+ XFree(visinfo); -+} -+ -+ -+/* -+ * Examine all visuals to find the so-called best one. -+ * We prefer deepest RGBA buffer with depth, stencil and accum -+ * that has no caveats. -+ */ -+static int -+find_best_visual(Display *dpy, int scrnum) -+{ -+ XVisualInfo theTemplate; -+ XVisualInfo *visuals; -+ int numVisuals; -+ long mask; -+ int i; -+ struct visual_attribs bestVis; -+ -+ /* get list of all visuals on this screen */ -+ theTemplate.screen = scrnum; -+ mask = VisualScreenMask; -+ visuals = XGetVisualInfo(dpy, mask, &theTemplate, &numVisuals); -+ -+ /* init bestVis with first visual info */ -+ get_visual_attribs(dpy, &visuals[0], &bestVis); -+ -+ /* try to find a "better" visual */ -+ for (i = 1; i < numVisuals; i++) { -+ struct visual_attribs vis; -+ -+ get_visual_attribs(dpy, &visuals[i], &vis); -+ -+ /* always skip visuals with caveats */ -+ if (vis.visualCaveat != GLX_NONE_EXT) -+ continue; -+ -+ /* see if this vis is better than bestVis */ -+ if ((!bestVis.supportsGL && vis.supportsGL) || -+ (bestVis.visualCaveat != GLX_NONE_EXT) || -+ (!(bestVis.render_type & GLX_RGBA_BIT) && (vis.render_type & GLX_RGBA_BIT)) || -+ (!bestVis.doubleBuffer && vis.doubleBuffer) || -+ (bestVis.redSize < vis.redSize) || -+ (bestVis.greenSize < vis.greenSize) || -+ (bestVis.blueSize < vis.blueSize) || -+ (bestVis.alphaSize < vis.alphaSize) || -+ (bestVis.depthSize < vis.depthSize) || -+ (bestVis.stencilSize < vis.stencilSize) || -+ (bestVis.accumRedSize < vis.accumRedSize)) { -+ /* found a better visual */ -+ bestVis = vis; -+ } -+ } -+ -+ XFree(visuals); -+ -+ return bestVis.id; -+} -+ -+ -+int -+main(int argc, char *argv[]) -+{ -+ Display *dpy; -+ int numScreens, scrnum; -+ struct options opts; -+ Bool coreWorked; -+ -+ parse_args(argc, argv, &opts); -+ -+ dpy = XOpenDisplay(opts.displayName); -+ if (!dpy) { -+ fprintf(stderr, "Error: unable to open display %s\n", -+ XDisplayName(opts.displayName)); -+ return -1; -+ } -+ -+ if (opts.findBest) { -+ int b; -+ mesa_hack(dpy, 0); -+ b = find_best_visual(dpy, 0); -+ printf("%d\n", b); -+ } -+ else { -+ numScreens = ScreenCount(dpy); -+ print_display_info(dpy); -+ for (scrnum = 0; scrnum < numScreens; scrnum++) { -+ mesa_hack(dpy, scrnum); -+ coreWorked = print_screen_info(dpy, scrnum, &opts, -+ True, False, opts.limits, False); -+ print_screen_info(dpy, scrnum, &opts, False, False, -+ opts.limits, coreWorked); -+ print_screen_info(dpy, scrnum, &opts, False, True, False, True); -+ -+ printf("\n"); -+ -+ if (opts.mode != Brief) { -+ print_visual_info(dpy, scrnum, opts.mode); -+#ifdef GLX_VERSION_1_3 -+ print_fbconfig_info(dpy, scrnum, opts.mode); -+#endif -+ } -+ -+ if (scrnum + 1 < numScreens) -+ printf("\n\n"); -+ } -+ } -+ -+ XCloseDisplay(dpy); -+ -+ return 0; -+} -diff -aruN old/src/glx/xdemos/meson.build new/src/glx/xdemos/meson.build ---- old/src/glx/xdemos/meson.build 1970-01-01 01:00:00.000000000 +0100 -+++ new/src/glx/xdemos/meson.build 2021-12-31 12:15:26.361776512 +0000 -@@ -0,0 +1,32 @@ -+inc_xdemos = include_directories('.') -+ -+glxinfo_files = files( -+ 'glxinfo.c', -+ 'glinfo_common.c', -+) -+ -+x11_dep = dependency('x11', required: true) -+ -+executable('glxinfo', glxinfo_files, -+ install : true, -+ #c_args : gl_lib_cargs, -+ link_args : [ld_args_bsymbolic, ld_args_gc_sections, extra_ld_args_libgl, '-lm'], -+ link_with : libgl, -+ include_directories : [ inc_src, inc_include, inc_mesa, inc_glx], -+ dependencies : [x11_dep] -+) -+ -+executable('glxgears', 'glxgears.c', -+ install : true, -+ #c_args : gl_lib_cargs, -+ link_args : [ld_args_bsymbolic, ld_args_gc_sections, extra_ld_args_libgl, '-lm'], -+ link_with : libgl, -+ include_directories : [inc_src, inc_include, inc_mesa, inc_glx], -+ dependencies : [x11_dep] -+) -+ -+man_dir = get_option('prefix') + '/share/man/man1' -+install_data(['glxinfo.1', 'glxgears.1'], -+ install_dir : man_dir -+) -+ diff --git a/patches/zlib-1.2.12-upstreamfix.patch b/patches/zlib-1.2.12-upstreamfix.patch new file mode 100644 index 0000000..85a6a7e --- /dev/null +++ b/patches/zlib-1.2.12-upstreamfix.patch @@ -0,0 +1,51 @@ +From ec3df00224d4b396e2ac6586ab5d25f673caa4c2 Mon Sep 17 00:00:00 2001 +From: Mark Adler +Date: Wed, 30 Mar 2022 11:14:53 -0700 +Subject: [PATCH] Correct incorrect inputs provided to the CRC functions. + +The previous releases of zlib were not sensitive to incorrect CRC +inputs with bits set above the low 32. This commit restores that +behavior, so that applications with such bugs will continue to +operate as before. +--- + crc32.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/crc32.c b/crc32.c +index a1bdce5c2..451887bc7 100644 +--- a/crc32.c ++++ b/crc32.c +@@ -630,7 +630,7 @@ unsigned long ZEXPORT crc32_z(crc, buf, len) + #endif /* DYNAMIC_CRC_TABLE */ + + /* Pre-condition the CRC */ +- crc ^= 0xffffffff; ++ crc = (~crc) & 0xffffffff; + + /* Compute the CRC up to a word boundary. */ + while (len && ((z_size_t)buf & 7) != 0) { +@@ -749,7 +749,7 @@ unsigned long ZEXPORT crc32_z(crc, buf, len) + #endif /* DYNAMIC_CRC_TABLE */ + + /* Pre-condition the CRC */ +- crc ^= 0xffffffff; ++ crc = (~crc) & 0xffffffff; + + #ifdef W + +@@ -1077,7 +1077,7 @@ uLong ZEXPORT crc32_combine64(crc1, crc2, len2) + #ifdef DYNAMIC_CRC_TABLE + once(&made, make_crc_table); + #endif /* DYNAMIC_CRC_TABLE */ +- return multmodp(x2nmodp(len2, 3), crc1) ^ crc2; ++ return multmodp(x2nmodp(len2, 3), crc1) ^ (crc2 & 0xffffffff); + } + + /* ========================================================================= */ +@@ -1112,5 +1112,5 @@ uLong crc32_combine_op(crc1, crc2, op) + uLong crc2; + uLong op; + { +- return multmodp(op, crc1) ^ crc2; ++ return multmodp(op, crc1) ^ (crc2 & 0xffffffff); + } diff --git a/source-urls b/source-urls index 0275b32..e8ccc45 100644 --- a/source-urls +++ b/source-urls @@ -5,14 +5,14 @@ https://archive.massos.org/sources/acpi-1.7.tar.gz https://ftp.acc.umu.se/pub/gnome/sources/adwaita-icon-theme/41/adwaita-icon-theme-41.0.tar.xz https://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.6.1.tar.bz2 https://launchpad.net/apparmor/3.0/3.0.4/+download/apparmor-3.0.4.tar.gz -https://www.freedesktop.org/software/appstream/releases/AppStream-0.15.2.tar.xz +https://www.freedesktop.org/software/appstream/releases/AppStream-0.15.3.tar.xz https://github.com/hughsie/appstream-glib/archive/refs/tags/appstream_glib_0_7_18.tar.gz https://archive.massos.org/sources/arc-theme-20220102.tar.xz https://files.pythonhosted.org/packages/source/a/asciidoc/asciidoc-10.1.4.tar.gz https://mirror.lyrahosting.com/gnu/aspell/aspell-0.60.8.tar.gz https://mirror.lyrahosting.com/gnu/aspell/dict/en/aspell6-en-2020.12.07-0.tar.bz2 https://ftp.acc.umu.se/pub/gnome/sources/at-spi2-atk/2.38/at-spi2-atk-2.38.0.tar.xz -https://ftp.acc.umu.se/pub/gnome/sources/at-spi2-core/2.44/at-spi2-core-2.44.0.tar.xz +https://ftp.acc.umu.se/pub/gnome/sources/at-spi2-core/2.44/at-spi2-core-2.44.1.tar.xz https://ftp.acc.umu.se/pub/gnome/sources/atk/2.38/atk-2.38.0.tar.xz https://ftp.acc.umu.se/pub/gnome/sources/atkmm/2.28/atkmm-2.28.2.tar.xz https://download.savannah.gnu.org/releases/attr/attr-2.5.1.tar.gz @@ -26,16 +26,16 @@ https://gitlab.com/sane-project/backends/-/archive/1.1.1/backends-1.1.1.tar.gz https://ftp.acc.umu.se/pub/gnome/sources/baobab/41/baobab-41.0.tar.xz https://mirror.lyrahosting.com/gnu/bash/bash-5.1.16.tar.gz https://github.com/scop/bash-completion/releases/download/2.11/bash-completion-2.11.tar.xz -https://github.com/gavinhoward/bc/releases/download/5.2.3/bc-5.2.3.tar.xz -https://ftp.isc.org/isc/bind9/9.18.1/bind-9.18.1.tar.xz +https://github.com/gavinhoward/bc/releases/download/5.2.4/bc-5.2.4.tar.xz +https://ftp.isc.org/isc/bind9/9.18.2/bind-9.18.2.tar.xz https://mirror.lyrahosting.com/gnu/binutils/binutils-2.38.tar.xz https://mirror.lyrahosting.com/gnu/bison/bison-3.8.2.tar.xz https://github.com/blueman-project/blueman/releases/download/2.2.2/blueman-2.2.2.tar.xz https://cdn.kernel.org/pub/linux/bluetooth/bluez-5.64.tar.xz -https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.tar.bz2 +https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/boost_1_79_0.tar.bz2 https://github.com/google/brotli/archive/v1.0.9/brotli-1.0.9.tar.gz https://archive.massos.org/sources/bsd-games-3.1.tar.gz -https://cdn.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs/btrfs-progs-v5.16.2.tar.xz +https://cdn.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs/btrfs-progs-v5.17.tar.xz https://github.com/projectatomic/bubblewrap/releases/download/v0.6.1/bubblewrap-0.6.1.tar.xz https://www.busybox.net/downloads/busybox-1.35.0.tar.bz2 https://www.sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz @@ -47,14 +47,14 @@ https://deb.debian.org/debian/pool/main/c/cdrkit/cdrkit_1.1.11.orig.tar.gz https://files.pythonhosted.org/packages/source/c/cffi/cffi-1.15.0.tar.gz https://files.pythonhosted.org/packages/source/c/chardet/chardet-4.0.0.tar.gz https://github.com/libcheck/check/releases/download/0.15.2/check-0.15.2.tar.gz -https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.1/clang-14.0.1.src.tar.xz +https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.3/clang-14.0.3.src.tar.xz https://ftp.acc.umu.se/pub/gnome/sources/clutter/1.26/clutter-1.26.4.tar.xz https://ftp.acc.umu.se/pub/gnome/sources/clutter-gtk/1.8/clutter-gtk-1.8.4.tar.xz https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1.tar.gz https://github.com/abishekvashok/cmatrix/releases/download/v2.0/cmatrix-v2.0-Butterscotch.tar https://ftp.acc.umu.se/pub/gnome/sources/cogl/1.22/cogl-1.22.8.tar.xz https://www.freedesktop.org/software/colord/releases/colord-1.4.5.tar.xz -https://mirror.lyrahosting.com/gnu/coreutils/coreutils-9.0.tar.xz +https://mirror.lyrahosting.com/gnu/coreutils/coreutils-9.1.tar.xz https://github.com/tnalpgge/rank-amateur-cowsay/archive/cowsay-3.04.tar.gz https://github.com/cracklib/cracklib/releases/download/v2.9.7/cracklib-2.9.7.tar.bz2 https://github.com/cracklib/cracklib/releases/download/v2.9.7/cracklib-words-2.9.7.bz2 @@ -62,7 +62,7 @@ https://files.pythonhosted.org/packages/source/c/cryptography/cryptography-36.0. https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.4/cryptsetup-2.4.3.tar.xz https://github.com/OpenPrinting/cups/releases/download/v2.4.1/cups-2.4.1-source.tar.gz https://www.openprinting.org/download/cups-filters/cups-filters-1.28.15.tar.xz -https://curl.se/download/curl-7.82.0.tar.xz +https://curl.se/download/curl-7.83.0.tar.xz https://github.com/cyrusimap/cyrus-sasl/releases/download/cyrus-sasl-2.1.28/cyrus-sasl-2.1.28.tar.gz https://github.com/cython/cython/releases/download/0.29.25-1/Cython-0.29.25.tar.gz http://videolan.mirrors.nublue.co.uk/dav1d/1.0.0/dav1d-1.0.0.tar.xz @@ -72,11 +72,11 @@ https://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.112.tar.gz https://dbus.freedesktop.org/releases/dbus-python/dbus-python-1.2.18.tar.gz https://www.freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-0.26.tar.xz https://ftp.isc.org/isc/dhcp/4.4.3/dhcp-4.4.3.tar.gz -https://invisible-mirror.net/archives/dialog/dialog-1.3-20220117.tgz +https://invisible-mirror.net/archives/dialog/dialog-1.3-20220414.tgz https://mirror.lyrahosting.com/gnu/diffutils/diffutils-3.8.tar.xz https://github.com/microsoft/DirectX-Headers/archive/v1.600.10/DirectX-Headers-1.600.10.tar.gz https://github.com/python-distro/distro/archive/v1.6.0/distro-1.6.0.tar.gz -https://mirrorservice.org/sites/distfiles.gentoo.org/distfiles/djvulibre-3.5.28.tar.gz +https://archive.massos.org/sources/djvulibre-3.5.28.tar.gz https://github.com/dell/dkms/archive/v3.0.3/dkms-3.0.3.tar.gz https://deb.debian.org/debian/pool/main/d/dmg2img/dmg2img_1.6.7.orig.tar.gz https://download.savannah.nongnu.org/releases/dmidecode/dmidecode-3.3.tar.xz @@ -93,15 +93,15 @@ https://files.pythonhosted.org/packages/57/b1/b880503681ea1b64df05106fc7e3c4e380 https://waterlan.home.xs4all.nl/dos2unix/dos2unix-7.4.2.tar.gz https://github.com/dosfstools/dosfstools/releases/download/v4.2/dosfstools-4.2.tar.gz https://cdn.kernel.org/pub/linux/utils/boot/dracut/dracut-056.tar.gz -http://mirrorservice.org/sites/distfiles.gentoo.org/distfiles/dvd+rw-tools-7.1.tar.gz +http://mirror.lyrahosting.com/gentoo/distfiles/dvd+rw-tools-7.1.tar.gz https://cdn.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.46.5/e2fsprogs-1.46.5.tar.xz https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz http://mirror.lyrahosting.com/gnu/ed/ed-1.18.tar.lz -https://deb.debian.org/debian/pool/main/e/efibootmgr/efibootmgr_17.orig.tar.gz +https://github.com/rhboot/efibootmgr/releases/download/17/efibootmgr-17.tar.bz2 https://github.com/rhboot/efivar/releases/download/38/efivar-38.tar.bz2 -https://sourceware.org/ftp/elfutils/0.186/elfutils-0.186.tar.bz2 -https://github.com/AbiWord/enchant/releases/download/v2.3.2/enchant-2.3.2.tar.gz -https://ftp.acc.umu.se/pub/gnome/sources/evince/42/evince-42.1.tar.xz +https://sourceware.org/ftp/elfutils/0.187/elfutils-0.187.tar.bz2 +https://github.com/AbiWord/enchant/releases/download/v2.3.3/enchant-2.3.3.tar.gz +https://ftp.acc.umu.se/pub/gnome/sources/evince/42/evince-42.2.tar.xz https://deb.debian.org/debian/pool/main/e/exfatprogs/exfatprogs_1.1.3.orig.tar.xz https://github.com/Exiv2/exiv2/releases/download/v0.27.5/exiv2-0.27.5-Source.tar.gz https://archive.fr.xfce.org/src/xfce/exo/4.17/exo-4.17.1.tar.bz2 @@ -109,7 +109,7 @@ https://github.com/libexpat/libexpat/releases/download/R_2_4_8/expat-2.4.8.tar.x https://github.com/knik0/faad2/archive/2_10_0/faad2-2_10_0.tar.gz https://deb.debian.org/debian/pool/main/f/fakeroot/fakeroot_1.28.orig.tar.gz https://github.com/yo8192/fcron/archive/ver3_3_1/fcron-ver3_3_1.tar.gz -https://ffmpeg.org/releases/ffmpeg-5.0.tar.xz +https://ffmpeg.org/releases/ffmpeg-5.0.1.tar.xz https://archive-4.kali.org/kali/pool/main/f/figlet/figlet_2.2.5.orig.tar.gz https://astron.com/pub/file/file-5.41.tar.gz https://mirror.lyrahosting.com/gnu/findutils/findutils-4.9.0.tar.xz @@ -122,13 +122,13 @@ https://www.x.org/archive/individual/font/font-util-1.3.2.tar.bz2 https://gitlab.freedesktop.org/fontconfig/fontconfig/-/archive/2.14.0/fontconfig-2.14.0.tar.bz2 https://github.com/FreeGLUTProject/freeglut/releases/download/v3.2.2/freeglut-3.2.2.tar.gz https://de.freedif.org/savannah/freetype/freetype-2.12.0.tar.xz -https://github.com/fribidi/fribidi/releases/download/v1.0.11/fribidi-1.0.11.tar.xz +https://github.com/fribidi/fribidi/releases/download/v1.0.12/fribidi-1.0.12.tar.xz https://github.com/libfuse/libfuse/releases/download/fuse-2.9.9/fuse-2.9.9.tar.gz https://github.com/libfuse/libfuse/releases/download/fuse-3.10.5/fuse-3.10.5.tar.xz https://github.com/galculator/galculator/archive/v2.1.4/galculator-2.1.4.tar.gz https://archive.fr.xfce.org/src/xfce/garcon/4.16/garcon-4.16.1.tar.bz2 https://mirror.lyrahosting.com/gnu/gawk/gawk-5.1.0.tar.xz -https://mirror.lyrahosting.com/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.xz +https://mirror.lyrahosting.com/gnu/gcc/gcc-11.3.0/gcc-11.3.0.tar.xz https://ftp.acc.umu.se/pub/gnome/sources/gcr/3.41/gcr-3.41.0.tar.xz https://mirror.lyrahosting.com/gnu/gdbm/gdbm-1.23.tar.gz https://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/2.42/gdk-pixbuf-2.42.8.tar.xz @@ -140,8 +140,8 @@ https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9561/g https://archive.massos.org/sources/ghostscript-fonts-std-8.11.tar.gz https://ftp.acc.umu.se/pub/gnome/sources/gi-docgen/2022/gi-docgen-2022.1.tar.xz https://archive.massos.org/sources/giflib-5.2.1.tar.gz -https://cdn.kernel.org/pub/software/scm/git/git-2.35.3.tar.xz -https://ftp.acc.umu.se/pub/gnome/sources/glib/2.72/glib-2.72.0.tar.xz +https://cdn.kernel.org/pub/software/scm/git/git-2.36.0.tar.xz +https://ftp.acc.umu.se/pub/gnome/sources/glib/2.72/glib-2.72.1.tar.xz https://ftp.acc.umu.se/pub/gnome/sources/glib-networking/2.72/glib-networking-2.72.0.tar.xz https://mirror.lyrahosting.com/gnu/glibc/glibc-2.35.tar.xz https://ftp.acc.umu.se/pub/gnome/sources/glibmm/2.66/glibmm-2.66.2.tar.xz @@ -152,14 +152,14 @@ https://ftp.acc.umu.se/pub/gnome/sources/gnome-online-accounts/3.44/gnome-online https://ftp.acc.umu.se/pub/gnome/sources/gnome-software/41/gnome-software-41.5.tar.xz https://archive.massos.org/sources/gnu-efi-3.0.13.tar.bz2 https://archive.massos.org/sources/gnu-gs-fonts-other-6.0.tar.gz -https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.3.4.tar.bz2 +https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.3.6.tar.bz2 https://www.gnupg.org/ftp/gcrypt/gnutls/v3.7/gnutls-3.7.4.tar.xz https://ftp.acc.umu.se/pub/gnome/sources/gobject-introspection/1.72/gobject-introspection-1.72.0.tar.xz https://gitlab.gnome.org/GNOME/gparted/-/archive/GPARTED_1_4_0/gparted-GPARTED_1_4_0.tar.bz2 https://mirror.lyrahosting.com/gnu/gperf/gperf-3.1.tar.gz https://www.gnupg.org/ftp/gcrypt/gpgme/gpgme-1.17.1.tar.bz2 https://archive.massos.org/precompiled/gpm-1.20.7-38-ge82d1a6-x86_64-Precompiled-MassOS.tar.xz -https://archive.massos.org/sources/gptfdisk-1.0.8.tar.gz +https://archive.massos.org/sources/gptfdisk-1.0.9.tar.gz https://github.com/ebassi/graphene/archive/1.10.8/graphene-1.10.8.tar.gz https://github.com/silnrsi/graphite/releases/download/1.3.14/graphite2-1.3.14.tgz https://gitlab.com/graphviz/graphviz/-/archive/3.0.0/graphviz-3.0.0.tar.gz @@ -167,7 +167,7 @@ https://mirror.lyrahosting.com/gnu/grep/grep-3.7.tar.xz https://mirror.lyrahosting.com/gnu/groff/groff-1.22.4.tar.gz https://mirror.lyrahosting.com/gnu/grub/grub-2.06.tar.xz https://ftp.acc.umu.se/pub/gnome/sources/gsettings-desktop-schemas/42/gsettings-desktop-schemas-42.0.tar.xz -https://ftp.acc.umu.se/pub/gnome/sources/gspell/1.9/gspell-1.9.1.tar.xz +https://ftp.acc.umu.se/pub/gnome/sources/gspell/1.10/gspell-1.10.0.tar.xz https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.20.1.tar.xz https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.20.1.tar.xz https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.20.1.tar.xz @@ -180,18 +180,18 @@ https://ftp.acc.umu.se/pub/gnome/sources/gtk+/3.24/gtk+-3.24.33.tar.xz https://ftp.acc.umu.se/pub/gnome/sources/gtkmm/3.24/gtkmm-3.24.5.tar.xz https://ftp.acc.umu.se/pub/gnome/sources/gtksourceview/4.8/gtksourceview-4.8.3.tar.xz https://archive.massos.org/sources/gutenprint-5.3.3.tar.xz -https://ftp.acc.umu.se/pub/gnome/sources/gvfs/1.50/gvfs-1.50.0.tar.xz +https://ftp.acc.umu.se/pub/gnome/sources/gvfs/1.50/gvfs-1.50.1.tar.xz https://archive.massos.org/sources/gz2xz-1.0.2.tar.gz https://mirror.lyrahosting.com/gnu/gzip/gzip-1.12.tar.xz -https://github.com/harfbuzz/harfbuzz/releases/download/4.2.0/harfbuzz-4.2.0.tar.xz +https://github.com/harfbuzz/harfbuzz/releases/download/4.2.1/harfbuzz-4.2.1.tar.xz https://icon-theme.freedesktop.org/releases/hicolor-icon-theme-0.17.tar.xz -https://mirrorservice.org/sites/distfiles.gentoo.org/distfiles/hplip-3.22.2.tar.gz +https://mirror.lyrahosting.com/gentoo/distfiles/hplip-3.22.2.tar.gz https://github.com/htop-dev/htop/releases/download/3.1.2/htop-3.1.2.tar.xz https://mirror.lyrahosting.com/gnu/help2man/help2man-1.49.2.tar.xz https://github.com/vcrhonek/hwdata/archive/v0.358/hwdata-0.358.tar.gz -https://github.com/Mic92/iana-etc/releases/download/20220401/iana-etc-20220401.tar.gz +https://github.com/Mic92/iana-etc/releases/download/20220414/iana-etc-20220414.tar.gz https://www.x.org/archive/individual/app/iceauth-1.0.9.tar.xz -https://mirrorservice.org/sites/archive.ubuntu.com/ubuntu/pool/main/i/icon-naming-utils/icon-naming-utils_0.8.90.orig.tar.gz +https://mirror.lyrahosting.com/ubuntuarchive/ubuntu/pool/main/i/icon-naming-utils/icon-naming-utils_0.8.90.orig.tar.gz https://github.com/unicode-org/icu/releases/download/release-71-1/icu4c-71_1-src.tgz https://files.pythonhosted.org/packages/source/i/idna/idna-3.3.tar.gz https://github.com/python/importlib_metadata/archive/v4.10.1/importlib_metadata-4.10.1.tar.gz @@ -202,12 +202,12 @@ https://cdn.kernel.org/pub/linux/utils/net/iproute2/iproute2-5.17.0.tar.xz https://www.netfilter.org/projects/iptables/files/iptables-1.8.7.tar.bz2 https://deb.debian.org/debian/pool/main/i/iso-codes/iso-codes_4.9.0.orig.tar.xz https://archive.massos.org/sources/itstool-2.0.7.tar.bz2 -https://github.com/jackaudio/jack2/archive/v1.9.20/jack2-1.9.20.tar.gz +https://github.com/jackaudio/jack2/archive/v1.9.21/jack2-1.9.21.tar.gz https://digip.org/jansson/releases/jansson-2.13.1.tar.gz https://github.com/jasper-software/jasper/archive/version-2.0.33/jasper-2.0.33.tar.gz https://files.pythonhosted.org/packages/source/J/Jinja2/Jinja2-3.1.1.tar.gz https://www.cpan.org/authors/id/I/IS/ISHIGAKI/JSON-4.05.tar.gz -https://s3.amazonaws.com/json-c_releases/releases/json-c-0.15.tar.gz +https://s3.amazonaws.com/json-c_releases/releases/json-c-0.16.tar.gz https://ftp.acc.umu.se/pub/gnome/sources/json-glib/1.6/json-glib-1.6.6.tar.xz https://github.com/open-source-parsers/jsoncpp/archive/1.9.5/jsoncpp-1.9.5.tar.gz https://cdn.kernel.org/pub/linux/utils/kbd/kbd-2.4.0.tar.xz @@ -223,7 +223,7 @@ https://github.com/libarchive/libarchive/releases/download/v3.6.1/libarchive-3.6 https://github.com/libass/libass/releases/download/0.15.2/libass-0.15.2.tar.xz https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.5.5.tar.bz2 https://archive-4.kali.org/kali/pool/main/liba/libatasmart/libatasmart_0.19.orig.tar.xz -http://mirrorservice.org/sites/distfiles.gentoo.org/distfiles/libavc1394-0.5.4.tar.gz +http://mirror.lyrahosting.com/gentoo/distfiles/libavc1394-0.5.4.tar.gz https://github.com/storaged-project/libblockdev/releases/download/2.26-1/libblockdev-2.26.tar.gz https://videolan.mirrors.nublue.co.uk/libbluray/1.3.0/libbluray-1.3.0.tar.bz2 https://files.libburnia-project.org/releases/libburn-1.5.4.tar.gz @@ -251,53 +251,54 @@ https://ftp.acc.umu.se/pub/gnome/sources/libgdata/0.18/libgdata-0.18.1.tar.xz https://ftp.acc.umu.se/pub/gnome/sources/libgee/0.20/libgee-0.20.5.tar.xz https://ftp.acc.umu.se/pub/gnome/sources/libglade/2.6/libglade-2.6.4.tar.bz2 https://gitlab.gnome.org/pwithnall/libglib-testing/-/archive/0.1.1/libglib-testing-0.1.1.tar.bz2 +https://gitlab.freedesktop.org/glvnd/libglvnd/-/archive/v1.4.0/libglvnd-v1.4.0.tar.bz2 https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.45.tar.bz2 https://github.com/gphoto/libgphoto2/releases/download/v2.5.29/libgphoto2-2.5.29.tar.xz https://ftp.acc.umu.se/pub/gnome/sources/libgudev/237/libgudev-237.tar.xz -https://mirrorservice.org/sites/distfiles.gentoo.org/distfiles/libgusb-0.3.10.tar.xz +https://mirror.lyrahosting.com/gentoo/distfiles/libgusb-0.3.10.tar.xz https://ftp.acc.umu.se/pub/gnome/sources/libgxps/0.3/libgxps-0.3.2.tar.xz -https://ftp.acc.umu.se/pub/gnome/sources/libhandy/1.6/libhandy-1.6.1.tar.xz +https://ftp.acc.umu.se/pub/gnome/sources/libhandy/1.6/libhandy-1.6.2.tar.xz https://github.com/libical/libical/releases/download/v3.0.14/libical-3.0.14.tar.gz https://www.x.org/archive/individual/lib/libICE-1.0.10.tar.bz2 https://mirror.lyrahosting.com/gnu/libidn/libidn2-2.3.2.tar.gz https://cdn.kernel.org/pub/linux/libs/ieee1394/libiec61883-1.2.0.tar.xz https://github.com/libimobiledevice/libimobiledevice/releases/download/1.3.0/libimobiledevice-1.3.0.tar.bz2 https://github.com/benhoyt/inih/archive/r55/inih-r55.tar.gz -https://gitlab.freedesktop.org/libinput/libinput/-/archive/1.20.0/libinput-1.20.0.tar.bz2 +https://gitlab.freedesktop.org/libinput/libinput/-/archive/1.20.1/libinput-1.20.1.tar.bz2 https://files.libburnia-project.org/releases/libisoburn-1.5.4.tar.gz https://files.libburnia-project.org/releases/libisofs-1.5.4.tar.gz https://github.com/libjpeg-turbo/libjpeg-turbo/archive/2.1.3/libjpeg-turbo-2.1.3.tar.gz https://www.gnupg.org/ftp/gcrypt/libksba/libksba-1.6.0.tar.bz2 -https://www.freedesktop.org/software/libmbim/libmbim-1.26.2.tar.xz +https://www.freedesktop.org/software/libmbim/libmbim-1.26.4.tar.xz https://launchpad.net/libmetalink/trunk/libmetalink-0.1.3/+download/libmetalink-0.1.3.tar.bz2 -https://mirrorservice.org/sites/distfiles.gentoo.org/distfiles/libmodplug-0.8.9.0.tar.gz -https://mirrorservice.org/sites/distfiles.gentoo.org/distfiles/libmpeg2-0.5.1.tar.gz +https://mirror.lyrahosting.com/gentoo/distfiles/libmodplug-0.8.9.0.tar.gz +https://mirror.lyrahosting.com/gentoo/distfiles/libmpeg2-0.5.1.tar.gz https://github.com/libmtp/libmtp/releases/download/v1.1.19/libmtp-1.1.19.tar.gz https://github.com/hoene/libmysofa/archive/v1.2.1/libmysofa-1.2.1.tar.gz -https://mirrorservice.org/sites/archive.ubuntu.com/ubuntu/pool/main/libn/libndp/libndp_1.8.orig.tar.gz +https://mirror.lyrahosting.com/ubuntuarchive/ubuntu/pool/main/libn/libndp/libndp_1.8.orig.tar.gz https://github.com/sahlberg/libnfs/archive/libnfs-4.0.0.tar.gz -https://github.com/thom311/libnl/releases/download/libnl3_5_0/libnl-3.5.0.tar.gz +https://github.com/thom311/libnl/releases/download/libnl3_6_0/libnl-3.6.0.tar.gz https://ftp.acc.umu.se/pub/gnome/sources/libnma/1.8/libnma-1.8.38.tar.xz -https://ftp.acc.umu.se/pub/gnome/sources/libnotify/0.7/libnotify-0.7.9.tar.xz +https://ftp.acc.umu.se/pub/gnome/sources/libnotify/0.7/libnotify-0.7.11.tar.xz https://github.com/thkukuk/libnsl/releases/download/v2.0.0/libnsl-2.0.0.tar.xz https://downloads.xiph.org/releases/ogg/libogg-1.3.5.tar.xz https://github.com/ostreedev/ostree/releases/download/v2022.2/libostree-2022.2.tar.xz https://www.tcpdump.org/release/libpcap-1.10.1.tar.gz https://www.x.org/archive/individual/lib/libpciaccess-0.16.tar.bz2 https://ftp.acc.umu.se/pub/gnome/sources/libpeas/1.32/libpeas-1.32.0.tar.xz -https://de.freedif.org/savannah/libpipeline/libpipeline-1.5.5.tar.gz +https://de.freedif.org/savannah/libpipeline/libpipeline-1.5.6.tar.gz https://github.com/libimobiledevice/libplist/releases/download/2.2.0/libplist-2.2.0.tar.bz2 https://archive.massos.org/sources/libpng-1.6.37.tar.xz https://github.com/flatpak/libportal/releases/download/0.6/libportal-0.6.tar.xz https://github.com/rockdaboot/libpsl/releases/download/0.21.1/libpsl-0.21.1.tar.gz https://github.com/libpwquality/libpwquality/releases/download/libpwquality-1.4.4/libpwquality-1.4.4.tar.bz2 -https://www.freedesktop.org/software/libqmi/libqmi-1.30.4.tar.xz +https://www.freedesktop.org/software/libqmi/libqmi-1.30.6.tar.xz https://www.libraw.org/data/LibRaw-0.20.2.tar.gz https://cdn.kernel.org/pub/linux/libs/ieee1394/libraw1394-2.1.2.tar.xz -https://ftp.acc.umu.se/pub/gnome/sources/librsvg/2.54/librsvg-2.54.0.tar.xz +https://ftp.acc.umu.se/pub/gnome/sources/librsvg/2.54/librsvg-2.54.1.tar.xz https://github.com/libsndfile/libsamplerate/releases/download/0.2.2/libsamplerate-0.2.2.tar.xz https://github.com/sass/libsass/archive/3.6.5/libsass-3.6.5.tar.gz -https://github.com/seccomp/libseccomp/releases/download/v2.5.3/libseccomp-2.5.3.tar.gz +https://github.com/seccomp/libseccomp/releases/download/v2.5.4/libseccomp-2.5.4.tar.gz https://ftp.acc.umu.se/pub/gnome/sources/libsecret/0.20/libsecret-0.20.5.tar.xz https://ftp.acc.umu.se/pub/gnome/sources/libsigc++/2.10/libsigc++-2.10.8.tar.xz https://mirror.lyrahosting.com/gnu/libsigsegv/libsigsegv-2.14.tar.gz @@ -310,9 +311,10 @@ https://mirror.lyrahosting.com/gnu/libtasn1/libtasn1-4.18.0.tar.gz https://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.xz https://archive.massos.org/sources/libtirpc-1.3.2.tar.bz2 https://mirror.lyrahosting.com/gnu/libtool/libtool-2.4.7.tar.xz +https://github.com/stefanberger/libtpms/archive/v0.9.2/libtpms-0.9.2.tar.gz https://mirror.lyrahosting.com/gnu/libunistring/libunistring-1.0.tar.xz https://de.freedif.org/savannah/libunwind/libunwind-1.6.2.tar.gz -https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.1/libunwind-14.0.1.src.tar.xz +https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.3/libunwind-14.0.3.src.tar.xz https://git.kernel.dk/cgit/liburing/snapshot/liburing-2.1.tar.bz2 https://github.com/libusb/libusb/releases/download/v1.0.26/libusb-1.0.26.tar.bz2 https://github.com/libimobiledevice/libusbmuxd/releases/download/2.0.2/libusbmuxd-2.0.2.tar.bz2 @@ -345,7 +347,7 @@ https://www.x.org/archive/individual/lib/libxkbfile-1.1.0.tar.bz2 https://people.freedesktop.org/~svu/libxklavier-5.4.tar.bz2 https://www.x.org/archive/individual/lib/libXi-1.8.tar.bz2 https://www.x.org/archive/individual/lib/libXinerama-1.1.4.tar.bz2 -https://mirrorservice.org/sites/distfiles.gentoo.org/distfiles/libxml2-2.9.13.tar.xz +https://mirror.lyrahosting.com/gentoo/distfiles/libxml2-2.9.13.tar.xz https://github.com/hughsie/libxmlb/archive/0.3.6/libxmlb-0.3.6.tar.gz https://www.x.org/archive/individual/lib/libXmu-1.1.3.tar.bz2 https://www.x.org/archive/individual/lib/libXpm-3.5.13.tar.bz2 @@ -364,11 +366,11 @@ https://www.x.org/archive/individual/lib/libXxf86vm-1.1.4.tar.bz2 https://libzip.org/download/libzip-1.8.0.tar.xz https://github.com/CanonicalLtd/lightdm/releases/download/1.30.0/lightdm-1.30.0.tar.xz https://github.com/Xubuntu/lightdm-gtk-greeter/releases/download/lightdm-gtk-greeter-2.0.8/lightdm-gtk-greeter-2.0.8.tar.gz -https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.17.3.tar.xz +https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.17.5.tar.xz https://github.com/linux-pam/linux-pam/releases/download/v1.5.2/Linux-PAM-1.5.2.tar.xz https://github.com/linux-pam/linux-pam/releases/download/v1.5.2/Linux-PAM-1.5.2-docs.tar.xz -https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.1/lld-14.0.1.src.tar.xz -https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.1/llvm-14.0.1.src.tar.xz +https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.3/lld-14.0.3.src.tar.xz +https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.3/llvm-14.0.3.src.tar.xz https://github.com/lm-sensors/lm-sensors/archive/V3-6-0/lm-sensors-3-6-0.tar.gz https://github.com/LMDB/lmdb/archive/LMDB_0.9.29.tar.gz https://www.cpan.org/authors/id/P/PV/PVANDRY/Locale-gettext-1.07.tar.gz @@ -395,11 +397,11 @@ https://files.pythonhosted.org/packages/source/M/Markdown/Markdown-3.3.6.tar.gz https://files.pythonhosted.org/packages/source/M/MarkupSafe/MarkupSafe-2.1.1.tar.gz https://github.com/MassOS-Linux/massos-welcome/archive/cc649f83e04f0daa880edf1df8e4d5165b79787c/massos-welcome-cc649f83e04f0daa880edf1df8e4d5165b79787c.tar.gz https://cdn.kernel.org/pub/linux/utils/raid/mdadm/mdadm-4.2.tar.xz -https://archive.mesa3d.org/mesa-22.0.1.tar.xz -https://github.com/mesonbuild/meson/releases/download/0.62.0/meson-0.62.0.tar.gz +https://archive.mesa3d.org/mesa-22.0.2.tar.xz +https://github.com/mesonbuild/meson/releases/download/0.62.1/meson-0.62.1.tar.gz https://www.x.org/archive/individual/app/mkfontscale-1.2.2.tar.xz https://gitlab.gnome.org/GNOME/mobile-broadband-provider-info/-/archive/20220315/mobile-broadband-provider-info-20220315.tar.bz2 -https://www.freedesktop.org/software/ModemManager/ModemManager-1.18.6.tar.xz +https://www.freedesktop.org/software/ModemManager/ModemManager-1.18.8.tar.xz https://deb.debian.org/debian/pool/main/m/moreutils/moreutils_0.67.orig.tar.gz https://mirror.lyrahosting.com/gnu/mpc/mpc-1.2.1.tar.gz https://mirror.lyrahosting.com/gnu/mpfr/mpfr-4.1.0.tar.xz @@ -408,7 +410,7 @@ https://bitmath.org/code/mtdev/mtdev-1.1.6.tar.bz2 https://mirror.lyrahosting.com/gnu/mtools/mtools-4.0.39.tar.gz https://github.com/bluesabre/mugshot/releases/download/mugshot-0.4.3/mugshot-0.4.3.tar.gz https://www.mupdf.com/downloads/archive/mupdf-1.19.1-source.tar.gz -https://nano-editor.org/dist/v6/nano-6.2.tar.xz +https://nano-editor.org/dist/v6/nano-6.3.tar.xz https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.xz https://mirror.lyrahosting.com/gnu/ncurses/ncurses-6.3.tar.gz https://archive.massos.org/sources/net-snmp-5.9.1.tar.xz @@ -423,7 +425,7 @@ https://github.com/ninja-build/ninja/archive/v1.10.2/ninja-1.10.2.tar.gz https://gitlab.com/TheSonicMaster/noto-fonts-tarball/-/raw/3/noto-fonts3.tar.xz https://www.gnupg.org/ftp/gcrypt/npth/npth-1.6.tar.bz2 https://archive.mozilla.org/pub/nspr/releases/v4.33/src/nspr-4.33.tar.gz -https://archive.mozilla.org/pub/security/nss/releases/NSS_3_77_RTM/src/nss-3.77.tar.gz +https://archive.mozilla.org/pub/security/nss/releases/NSS_3_78_RTM/src/nss-3.78.tar.gz https://github.com/tuxera/ntfs-3g/archive/2021.8.22/ntfs-3g-2021.8.22.tar.gz https://github.com/kcat/openal-soft/archive/1.21.1/openal-soft-1.21.1.tar.gz https://github.com/cisco/openh264/archive/v2.1.1/openh264-2.1.1.tar.gz @@ -441,19 +443,19 @@ https://deb.debian.org/debian/pool/main/o/os-prober/os-prober_1.79.tar.xz https://github.com/p11-glue/p11-kit/releases/download/0.24.1/p11-kit-0.24.1.tar.xz https://archive.massos.org/sources/p7zip-17.04-6-geb1bbb0.tar.xz https://archive.massos.org/sources/pahole-1.23.tar.xz -https://ftp.acc.umu.se/pub/gnome/sources/pango/1.50/pango-1.50.6.tar.xz +https://ftp.acc.umu.se/pub/gnome/sources/pango/1.50/pango-1.50.7.tar.xz https://ftp.acc.umu.se/pub/gnome/sources/pangomm/2.46/pangomm-2.46.2.tar.xz https://archive.fr.xfce.org/src/apps/parole/4.16/parole-4.16.0.tar.bz2 https://cpan.metacpan.org/authors/id/W/WB/WBRASWELL/Parse-Yapp-1.21.tar.gz -https://mirror.lyrahosting.com/gnu/parted/parted-3.4.tar.xz +https://mirror.lyrahosting.com/gnu/parted/parted-3.5.tar.xz https://mirror.lyrahosting.com/gnu/patch/patch-2.7.6.tar.xz https://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-5.0.tar.xz -https://cdn.kernel.org/pub/software/utils/pciutils/pciutils-3.7.0.tar.xz +https://cdn.kernel.org/pub/software/utils/pciutils/pciutils-3.8.0.tar.xz https://archive.massos.org/sources/pcre-8.45.tar.bz2 -https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.tar.bz2 +https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.40/pcre2-10.40.tar.bz2 https://www.cpan.org/src/5.0/perl-5.34.1.tar.xz https://github.com/pexpect/pexpect/archive/4.8.0/pexpect-4.8.0.tar.gz -https://github.com/OpenSC/pkcs11-helper/releases/download/pkcs11-helper-1.28.0/pkcs11-helper-1.28.0.tar.gz +https://github.com/OpenSC/pkcs11-helper/releases/download/pkcs11-helper-1.29.0/pkcs11-helper-1.29.0.tar.bz2 https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz https://deb.debian.org/debian/pool/main/p/pigz/pigz_2.6.orig.tar.xz https://www.gnupg.org/ftp/gcrypt/pinentry/pinentry-1.2.0.tar.bz2 @@ -471,11 +473,11 @@ https://gitlab.com/procps-ng/procps/-/archive/v4.0.0/procps-v4.0.0.tar.bz2 https://gitlab.com/psmisc/psmisc/-/archive/v23.4/psmisc-23.4.tar.gz https://files.pythonhosted.org/packages/source/p/ptyprocess/ptyprocess-0.7.0.tar.gz https://www.freedesktop.org/software/pulseaudio/releases/pulseaudio-15.0.tar.xz -https://mirrorservice.org/sites/distfiles.gentoo.org/distfiles/pv-1.6.20.tar.bz2 +https://mirror.lyrahosting.com/gentoo/distfiles/pv-1.6.20.tar.bz2 https://github.com/pygobject/pycairo/releases/download/v1.21.0/pycairo-1.21.0.tar.gz https://github.com/eliben/pycparser/archive/release_v2.21/pycparser-release_v2.21.tar.gz -https://files.pythonhosted.org/packages/source/P/Pygments/Pygments-2.11.2.tar.gz -https://ftp.acc.umu.se/pub/gnome/sources/pygobject/3.42/pygobject-3.42.0.tar.xz +https://files.pythonhosted.org/packages/source/P/Pygments/Pygments-2.12.0.tar.gz +https://ftp.acc.umu.se/pub/gnome/sources/pygobject/3.42/pygobject-3.42.1.tar.xz https://github.com/pyca/pyopenssl/archive/22.0.0/pyopenssl-22.0.0.tar.gz https://github.com/pyparsing/pyparsing/archive/pyparsing_3.0.7.tar.gz https://www.python.org/ftp/python/3.10.4/Python-3.10.4.tar.xz @@ -487,16 +489,16 @@ https://github.com/psf/requests/releases/download/v2.27.1/requests-2.27.1.tar.gz https://ftp.acc.umu.se/pub/gnome/sources/rest/0.8/rest-0.8.1.tar.xz https://github.com/rhash/RHash/archive/v1.4.2/RHash-1.4.2.tar.gz https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4.3/rpcsvc-proto-1.4.3.tar.xz -http://mirrorservice.org/sites/distfiles.gentoo.org/distfiles/rrdtool-1.7.2.tar.gz -https://www.samba.org/ftp/rsync/src/rsync-3.2.3.tar.gz +http://mirror.lyrahosting.com/gentoo/distfiles/rrdtool-1.7.2.tar.gz +https://www.samba.org/ftp/rsync/src/rsync-3.2.4.tar.gz https://archive.massos.org/sources/rtmpdump-2.4-20210219-gf1b83c1.tar.xz -https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.1.tar.xz +https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.2.tar.xz https://static.rust-lang.org/dist/rust-1.58.1-x86_64-unknown-linux-gnu.tar.gz https://download.samba.org/pub/samba/stable/samba-4.16.0.tar.gz https://github.com/sass/sassc/archive/3.6.2/sassc-3.6.2.tar.gz https://cdn.kernel.org/pub/linux/bluetooth/sbc-1.5.tar.xz https://www.libsdl.org/release/SDL-1.2.15.tar.gz -https://www.libsdl.org/release/SDL2-2.0.20.tar.gz +https://www.libsdl.org/release/SDL2-2.0.22.tar.gz https://mirror.lyrahosting.com/gnu/sed/sed-4.8.tar.xz https://files.pythonhosted.org/packages/64/ac/df31047966c4d0293e7bd16276ebc9f6654de36ad8e19061a09369380c0a/semantic_version-2.9.0-py2.py3-none-any.whl https://www.x.org/archive/individual/app/sessreg-1.1.2.tar.bz2 @@ -515,9 +517,10 @@ https://github.com/snowballstem/snowball/archive/v2.2.0/snowball-2.2.0.tar.gz https://www.surina.net/soundtouch/soundtouch-2.3.1.tar.gz https://downloads.xiph.org/releases/speex/speex-1.2.0.tar.gz https://downloads.xiph.org/releases/speex/speexdsp-1.2.0.tar.gz +https://archive.massos.org/workdev/sphinx-4.5.0-x86_64-venv.tar.xz https://github.com/KhronosGroup/SPIRV-Headers/archive/sdk-1.3.204.1/SPIRV-Headers-sdk-1.3.204.1.tar.gz https://github.com/KhronosGroup/SPIRV-Tools/archive/v2022.2/SPIRV-Tools-2022.2.tar.gz -https://sqlite.org/2022/sqlite-autoconf-3380200.tar.gz +https://sqlite.org/2022/sqlite-autoconf-3380300.tar.gz https://archive.massos.org/sources/squashfs-tools-4.5.tar.xz https://github.com/vasi/squashfuse/releases/download/0.1.104/squashfuse-0.1.104.tar.gz https://github.com/libfuse/sshfs/releases/download/sshfs-3.7.2/sshfs-3.7.2.tar.xz @@ -535,10 +538,11 @@ https://archive.massos.org/sources/thin-provisioning-tools-0.9.0.tar.gz https://archive.fr.xfce.org/src/xfce/thunar/4.17/thunar-4.17.8.tar.bz2 https://archive.fr.xfce.org/src/thunar-plugins/thunar-archive-plugin/0.4/thunar-archive-plugin-0.4.0.tar.bz2 https://archive.fr.xfce.org/src/xfce/thunar-volman/4.16/thunar-volman-4.16.0.tar.bz2 -https://archive.mozilla.org/pub/thunderbird/releases/91.7.0/linux-x86_64/en-US/thunderbird-91.7.0.tar.bz2 +https://archive.mozilla.org/pub/thunderbird/releases/91.8.1/linux-x86_64/en-US/thunderbird-91.8.1.tar.bz2 https://download.osgeo.org/libtiff/tiff-4.3.0.tar.gz https://archive.massos.org/sources/tk8.6.12-src.tar.gz https://files.pythonhosted.org/packages/source/t/toml/toml-0.10.2.tar.gz +https://github.com/tpm2-software/tpm2-tss/releases/download/3.2.0/tpm2-tss-3.2.0.tar.gz https://archive.massos.org/sources/tree-2.0.2.tgz https://archive.fr.xfce.org/src/xfce/tumbler/4.17/tumbler-4.17.0.tar.bz2 https://github.com/njh/twolame/releases/download/0.4.0/twolame-0.4.0.tar.gz @@ -546,7 +550,7 @@ https://files.pythonhosted.org/packages/45/6b/44f7f8f1e110027cf88956b59f2fad776c https://files.pythonhosted.org/packages/source/t/typogrify/typogrify-2.0.7.tar.gz https://www.iana.org/time-zones/repository/releases/tzdata2022a.tar.gz https://github.com/storaged-project/udisks/releases/download/udisks-2.9.4/udisks-2.9.4.tar.bz2 -https://unifoundry.com/pub/unifont/unifont-14.0.02/font-builds/unifont-14.0.02.pcf.gz +https://unifoundry.com/pub/unifont/unifont-14.0.03/font-builds/unifont-14.0.03.pcf.gz https://archive.massos.org/sources/unzip60.tar.gz https://gitlab.freedesktop.org/upower/upower/-/archive/v0.99.17/upower-v0.99.17.tar.bz2 https://github.com/urllib3/urllib3/releases/download/1.26.9/urllib3-1.26.9.tar.gz @@ -554,8 +558,8 @@ https://cdn.kernel.org/pub/linux/utils/usb/usbutils/usbutils-014.tar.xz https://lttng.org/files/urcu/userspace-rcu-0.13.1.tar.bz2 https://cdn.kernel.org/pub/linux/utils/util-linux/v2.38/util-linux-2.38.tar.xz https://www.x.org/archive/individual/util/util-macros-1.19.3.tar.bz2 -https://ftp.acc.umu.se/pub/gnome/sources/vala/0.56/vala-0.56.0.tar.xz -https://github.com/vim/vim/archive/v8.2.4700/vim-8.2.4700.tar.gz +https://ftp.acc.umu.se/pub/gnome/sources/vala/0.56/vala-0.56.1.tar.xz +https://github.com/vim/vim/archive/v8.2.4826/vim-8.2.4826.tar.gz https://deb.debian.org/debian/pool/main/v/vitetris/vitetris_0.59.1.orig.tar.gz https://github.com/Netflix/vmaf/archive/v2.3.0/vmaf-2.3.0.tar.gz https://github.com/felixonmars/volume_key/archive/volume_key-0.3.12.tar.gz @@ -576,7 +580,7 @@ https://www.x.org/archive/individual/app/x11perf-1.6.1.tar.bz2 https://archive.massos.org/sources/x264-0.164.3094.tar.xz https://archive.massos.org/sources/x265-3.5-35-g7a5709048.tar.xz https://github.com/ib/xarchiver/archive/0.5.4.17/xarchiver-0.5.4.17.tar.gz -https://www.x.org/archive/individual/app/xauth-1.1.1.tar.bz2 +https://www.x.org/archive/individual/app/xauth-1.1.2.tar.xz https://www.x.org/archive/individual/app/xbacklight-1.2.3.tar.bz2 https://www.x.org/archive/individual/data/xbitmaps-1.1.2.tar.bz2 https://xorg.freedesktop.org/archive/individual/proto/xcb-proto-1.14.1.tar.xz @@ -590,7 +594,7 @@ https://www.x.org/archive/individual/app/xcmsdb-1.0.5.tar.bz2 https://www.x.org/archive/individual/data/xcursor-themes-1.0.6.tar.bz2 https://www.x.org/archive/individual/app/xcursorgen-1.0.7.tar.bz2 https://github.com/flatpak/xdg-dbus-proxy/releases/download/0.1.2/xdg-dbus-proxy-0.1.2.tar.xz -https://github.com/flatpak/xdg-desktop-portal/releases/download/1.14.2/xdg-desktop-portal-1.14.2.tar.xz +https://github.com/flatpak/xdg-desktop-portal/releases/download/1.14.3/xdg-desktop-portal-1.14.3.tar.xz https://github.com/flatpak/xdg-desktop-portal-gtk/releases/download/1.14.0/xdg-desktop-portal-gtk-1.14.0.tar.xz https://user-dirs.freedesktop.org/releases/xdg-user-dirs-0.17.tar.gz https://portland.freedesktop.org/download/xdg-utils-1.1.3.tar.gz @@ -612,7 +616,7 @@ https://archive.fr.xfce.org/src/xfce/xfce4-appfinder/4.17/xfce4-appfinder-4.17.0 https://deb.debian.org/debian/pool/main/x/xfce4-artwork/xfce4-artwork_0.1.1a~git+20110420.orig.tar.gz https://archive.fr.xfce.org/src/panel-plugins/xfce4-clipman-plugin/1.6/xfce4-clipman-plugin-1.6.2.tar.bz2 https://archive.fr.xfce.org/src/apps/xfce4-notifyd/0.6/xfce4-notifyd-0.6.3.tar.bz2 -https://archive.fr.xfce.org/src/xfce/xfce4-panel/4.16/xfce4-panel-4.16.3.tar.bz2 +https://archive.fr.xfce.org/src/xfce/xfce4-panel/4.16/xfce4-panel-4.16.4.tar.bz2 https://archive.fr.xfce.org/src/xfce/xfce4-power-manager/4.16/xfce4-power-manager-4.16.0.tar.bz2 https://archive.fr.xfce.org/src/panel-plugins/xfce4-pulseaudio-plugin/0.4/xfce4-pulseaudio-plugin-0.4.3.tar.bz2 https://archive.fr.xfce.org/src/apps/xfce4-screensaver/4.16/xfce4-screensaver-4.16.0.tar.bz2 @@ -620,7 +624,7 @@ https://archive.fr.xfce.org/src/apps/xfce4-screenshooter/1.9/xfce4-screenshooter https://archive.fr.xfce.org/src/xfce/xfce4-session/4.16/xfce4-session-4.16.0.tar.bz2 https://archive.fr.xfce.org/src/xfce/xfce4-settings/4.16/xfce4-settings-4.16.2.tar.bz2 https://archive.fr.xfce.org/src/apps/xfce4-taskmanager/1.5/xfce4-taskmanager-1.5.2.tar.bz2 -https://archive.fr.xfce.org/src/apps/xfce4-terminal/1.0/xfce4-terminal-1.0.1.tar.bz2 +https://archive.fr.xfce.org/src/apps/xfce4-terminal/1.0/xfce4-terminal-1.0.2.tar.bz2 https://archive.fr.xfce.org/src/panel-plugins/xfce4-whiskermenu-plugin/2.6/xfce4-whiskermenu-plugin-2.6.1.tar.bz2 https://archive.fr.xfce.org/src/xfce/xfconf/4.16/xfconf-4.16.0.tar.bz2 https://archive.fr.xfce.org/src/xfce/xfdesktop/4.16/xfdesktop-4.16.0.tar.bz2 @@ -643,7 +647,7 @@ https://www.cpan.org/authors/id/G/GR/GRANTM/XML-Simple-2.25.tar.gz https://releases.pagure.org/xmlto/xmlto-0.0.28.tar.bz2 https://www.x.org/archive/individual/app/xmodmap-1.0.10.tar.bz2 https://www.x.org/archive/individual/xserver/xorg-server-21.1.3.tar.xz -https://xorg.freedesktop.org/archive/individual/proto/xorgproto-2021.5.tar.bz2 +https://xorg.freedesktop.org/archive/individual/proto/xorgproto-2022.1.tar.bz2 https://www.x.org/archive/individual/app/xpr-1.0.5.tar.bz2 https://www.x.org/archive/individual/app/xprop-1.2.5.tar.bz2 https://www.x.org/archive/individual/app/xrandr-1.5.1.tar.xz diff --git a/stage1.sh b/stage1.sh index 2ffff04..02d4091 100755 --- a/stage1.sh +++ b/stage1.sh @@ -18,6 +18,10 @@ CONFIG_SITE="$MASSOS"/usr/share/config.site export MASSOS MASSOS_TARGET PATH SRC CONFIG_SITE # Build in parallel using all available CPU cores. export MAKEFLAGS="-j$(nproc)" +# Compiler flags for MassOS. We prefer to optimise for size. +CFLAGS="-w -Os -pipe" +CXXFLAGS="-w -Os -pipe" +export CFLAGS CXXFLAGS # Setup the basic filesystem structure. mkdir -p "$MASSOS"/{etc,var} mkdir -p "$MASSOS"/usr/{bin,lib,sbin} @@ -29,7 +33,7 @@ ln -sf lib "$MASSOS"/usr/lib64 ln -sf usr/lib "$MASSOS"/lib64 # Directory where source tarballs will be placed while building. # Temporary toolchain directory. -mkdir $MASSOS/tools +mkdir "$MASSOS"/tools # Move sources into the temporary environment. mv sources "$SRC" # Copy patches into the temporary environment. @@ -37,19 +41,20 @@ mkdir -p "$SRC"/patches cp patches/* "$SRC"/patches # Copy systemd units into the temporary environment. cp -r utils/systemd-units "$SRC" -# Binutils (Pass 1). +# Change to the sources directory. cd "$SRC" +# Binutils (Pass 1). tar -xf binutils-2.38.tar.xz cd binutils-2.38 mkdir build; cd build -../configure --prefix="$MASSOS"/tools --with-sysroot="$MASSOS" --target=$MASSOS_TARGET --disable-nls --disable-werror +CFLAGS="-O2" CXXFLAGS="-O2" ../configure --prefix="$MASSOS"/tools --with-sysroot="$MASSOS" --target=$MASSOS_TARGET --with-pkgversion="MassOS Binutils" --disable-nls --disable-werror make make -j1 install cd ../.. rm -rf binutils-2.38 # GCC (Pass 1). -tar -xf gcc-11.2.0.tar.xz -cd gcc-11.2.0 +tar -xf gcc-11.3.0.tar.xz +cd gcc-11.3.0 tar -xf ../gmp-6.2.1.tar.xz mv gmp-6.2.1 gmp tar -xf ../mpfr-4.1.0.tar.xz @@ -57,29 +62,29 @@ mv mpfr-4.1.0 mpfr tar -xf ../mpc-1.2.1.tar.gz mv mpc-1.2.1 mpc mkdir build; cd build -../configure --target=$MASSOS_TARGET --prefix="$MASSOS"/tools --enable-languages=c,c++ --with-glibc-version=2.11 --with-sysroot="$MASSOS" --with-newlib --without-headers --enable-default-ssp --enable-initfini-array --disable-nls --disable-shared --disable-multilib --disable-decimal-float --disable-threads --disable-libatomic --disable-libgomp --disable-libquadmath --disable-libssp --disable-libvtv --disable-libstdcxx +CFLAGS="-O2" CXXFLAGS="-O2" ../configure --target=$MASSOS_TARGET --prefix="$MASSOS"/tools --enable-languages=c,c++ --with-pkgversion="MassOS GCC" --with-glibc-version=2.11 --with-sysroot="$MASSOS" --with-newlib --without-headers --enable-default-ssp --enable-initfini-array --disable-nls --disable-shared --disable-multilib --disable-decimal-float --disable-threads --disable-libatomic --disable-libgomp --disable-libquadmath --disable-libssp --disable-libvtv --disable-libstdcxx make make install cd .. cat gcc/limitx.h gcc/glimits.h gcc/limity.h > `dirname $($MASSOS_TARGET-gcc -print-libgcc-file-name)`/install-tools/include/limits.h cd .. -rm -rf gcc-11.2.0 +rm -rf gcc-11.3.0 # Linux API Headers. -tar -xf linux-5.17.3.tar.xz -cd linux-5.17.3 +tar -xf linux-5.17.5.tar.xz +cd linux-5.17.5 make headers find usr/include -name '.*' -delete rm usr/include/Makefile cp -r usr/include "$MASSOS"/usr cd .. -rm -rf linux-5.17.3 +rm -rf linux-5.17.5 # Glibc tar -xf glibc-2.35.tar.xz cd glibc-2.35 patch -Np1 -i ../patches/glibc-2.35-FHSCompliance.patch mkdir build; cd build echo "rootsbindir=/usr/sbin" > configparms -../configure --prefix=/usr --host=$MASSOS_TARGET --build=$(../scripts/config.guess) --enable-kernel=3.2 --with-headers="$MASSOS"/usr/include libc_cv_slibdir=/usr/lib +CFLAGS="-O2" CXXFLAGS="-O2" ../configure --prefix=/usr --host=$MASSOS_TARGET --build=$(../scripts/config.guess) --enable-kernel=3.2 --with-headers="$MASSOS"/usr/include libc_cv_slibdir=/usr/lib make make DESTDIR="$MASSOS" install ln -sf ld-linux-x86-64.so.2 "$MASSOS"/usr/lib/ld-lsb-x86-64.so.3 @@ -88,18 +93,14 @@ sed '/RTLDLIST=/s@/usr@@g' -i "$MASSOS"/usr/bin/ldd cd ../.. rm -rf glibc-2.35 # libstdc++ from GCC (Pass 1). -tar -xf gcc-11.2.0.tar.xz -cd gcc-11.2.0 +tar -xf gcc-11.3.0.tar.xz +cd gcc-11.3.0 mkdir build; cd build -../libstdc++-v3/configure --host=$MASSOS_TARGET --build=$(../config.guess) --prefix=/usr --disable-multilib --disable-nls --disable-libstdcxx-pch --with-gxx-include-dir=/tools/$MASSOS_TARGET/include/c++/$($MASSOS_TARGET-gcc --version | head -n1 | cut -d')' -f2 | sed 's/ //') +CFLAGS="-O2" CXXFLAGS="-O2" ../libstdc++-v3/configure --host=$MASSOS_TARGET --build=$(../config.guess) --prefix=/usr --disable-multilib --disable-nls --disable-libstdcxx-pch --with-gxx-include-dir=/tools/$MASSOS_TARGET/include/c++/$($MASSOS_TARGET-gcc --version | head -n1 | cut -d')' -f2 | sed 's/ //') make make DESTDIR="$MASSOS" install cd ../.. -rm -rf gcc-11.2.0 -# Compiler flags for MassOS. We prefer to optimise for size. -CFLAGS="-w -Os -pipe" -CXXFLAGS="-w -Os -pipe" -export CFLAGS CXXFLAGS +rm -rf gcc-11.3.0 # m4. tar -xf m4-1.4.19.tar.xz cd m4-1.4.19 @@ -133,8 +134,8 @@ ln -s bash "$MASSOS"/bin/sh cd .. rm -rf bash-5.1.16 # Coreutils. -tar -xf coreutils-9.0.tar.xz -cd coreutils-9.0 +tar -xf coreutils-9.1.tar.xz +cd coreutils-9.1 ./configure --prefix=/usr --host=$MASSOS_TARGET --build=$(build-aux/config.guess) --enable-install-program=hostname --enable-no-install-program=kill,uptime --with-packager="MassOS" make make DESTDIR="$MASSOS" install @@ -143,7 +144,7 @@ mkdir -p "$MASSOS"/usr/share/man/man8 mv "$MASSOS"/usr/share/man/man1/chroot.1 "$MASSOS"/usr/share/man/man8/chroot.8 sed -i 's/"1"/"8"/' "$MASSOS"/usr/share/man/man8/chroot.8 cd .. -rm -rf coreutils-9.0 +rm -rf coreutils-9.1 # Diffutils. tar -xf diffutils-3.8.tar.xz cd diffutils-3.8 @@ -232,27 +233,25 @@ rm -rf tar-1.34 # XZ. tar -xf xz-5.2.5.tar.xz cd xz-5.2.5 -./configure --prefix=/usr --host=$MASSOS_TARGET --build=$(build-aux/config.guess) --disable-static --docdir=/usr/share/doc/xz-5.2.5 +./configure --prefix=/usr --host=$MASSOS_TARGET --build=$(build-aux/config.guess) --disable-static make make DESTDIR="$MASSOS" install cd .. rm -rf xz-5.2.5 -# Unset compiler flags for building criticial toolchain tools. -unset CFLAGS CXXFLAGS # Binutils (Pass 2). tar -xf binutils-2.38.tar.xz cd binutils-2.38 sed '6009s/$add_dir//' -i ltmain.sh mkdir build; cd build -../configure --prefix=/usr --build=$(../config.guess) --host=$MASSOS_TARGET --disable-nls --enable-shared --disable-werror --enable-64-bit-bfd +CFLAGS="-O2" CXXFLAGS="-O2" ../configure --prefix=/usr --build=$(../config.guess) --host=$MASSOS_TARGET --with-pkgversion="MassOS Binutils" --disable-nls --enable-shared --disable-werror --enable-64-bit-bfd make make -j1 DESTDIR="$MASSOS" install install -m755 libctf/.libs/libctf.so.0.0.0 "$MASSOS"/usr/lib cd ../.. rm -rf binutils-2.38 # GCC (Pass 2). -tar -xf gcc-11.2.0.tar.xz -cd gcc-11.2.0 +tar -xf gcc-11.3.0.tar.xz +cd gcc-11.3.0 tar -xf ../gmp-6.2.1.tar.xz mv gmp-6.2.1 gmp tar -xf ../mpfr-4.1.0.tar.xz @@ -262,12 +261,12 @@ mv mpc-1.2.1 mpc mkdir build; cd build mkdir -p $MASSOS_TARGET/libgcc ln -s ../../../libgcc/gthr-posix.h $MASSOS_TARGET/libgcc/gthr-default.h -../configure CC_FOR_TARGET=$MASSOS_TARGET-gcc --build=$(../config.guess) --host=$MASSOS_TARGET --prefix=/usr --enable-languages=c,c++ --with-build-sysroot="$MASSOS" --enable-default-ssp --enable-initfini-array --disable-nls --disable-multilib --disable-decimal-float --disable-libatomic --disable-libgomp --disable-libquadmath --disable-libssp --disable-libvtv --disable-libstdcxx +CFLAGS="-O2" CXXFLAGS="-O2" ../configure CC_FOR_TARGET=$MASSOS_TARGET-gcc --build=$(../config.guess) --host=$MASSOS_TARGET --prefix=/usr --enable-languages=c,c++ --with-pkgversion="MassOS GCC" --with-build-sysroot="$MASSOS" --enable-default-ssp --enable-initfini-array --disable-nls --disable-multilib --disable-decimal-float --disable-libatomic --disable-libgomp --disable-libquadmath --disable-libssp --disable-libvtv --disable-libstdcxx make make DESTDIR="$MASSOS" install ln -s gcc "$MASSOS"/usr/bin/cc cd ../.. -rm -rf gcc-11.2.0 +rm -rf gcc-11.3.0 cd ../.. # Copy extra utilities and configuration files into the environment. cp -r utils/etc/* "$MASSOS"/etc diff --git a/stage2-resume-failed.sh b/stage2-resume-failed.sh new file mode 100755 index 0000000..5d2b1ad --- /dev/null +++ b/stage2-resume-failed.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# +# Try to resume a failed stage2 build. +set -e +# Ensure we're running as root. +if [ $EUID -ne 0 ]; then + echo "Error: Must be run as root." >&2 + exit 1 +fi +# Important verification message. +if [ "$1" != "CONFIRM_STAGE2_RESUME=YES" ]; then + echo "Please edit 'massos-rootfs/sources/build-system.sh' as root and" >&2 + echo "remove lines 39 up to where your build failed. Otherwise, it will" >&2 + echo "try to rebuild the whole system from the start, which WILL cause" >&2 + echo "issues if the system is already part-built." >&2 + echo -e "\nOnce you've done that, re-run this script like this:" >&2 + echo -e "\n$0 CONFIRM_STAGE2_RESUME=YES" >&2 + exit 1 +fi +# Setup the environment. +export MASSOS="$PWD"/massos-rootfs +# Ensure stage1 has been run first. +if [ ! -d "$MASSOS" ]; then + echo "Error: You must run stage1.sh first!" >&2 + exit 1 +fi +# Chroot into the MassOS environment and continue the build. +utils/programs/mass-chroot "$MASSOS" /sources/build-system.sh +# Strip executables and libraries to free up space. +printf "Stripping binaries... " +find "$MASSOS"/usr/{bin,libexec,sbin} -type f -exec strip --strip-all {} ';' &> /dev/null || true +echo "Done!" +printf "Stripping libraries... " +find "$MASSOS"/usr/lib -type f -name \*.a -exec strip --strip-debug {} ';' &> /dev/null || true +find "$MASSOS"/usr/lib -type f -name \*.so\* -exec strip --strip-unneeded {} ';' &> /dev/null || true +echo "Done!" +# Finish the MassOS system. +outfile="massos-$(cat utils/massos-release)-rootfs-x86_64.tar" +printf "Creating $outfile... " +cd "$MASSOS" +tar -cpf ../"$outfile" * +cd .. +echo "Done!" +echo "Compressing $outfile with XZ (using $(nproc) threads)..." +xz -v --threads=$(nproc) "$outfile" +echo "Successfully created $outfile.xz." +printf "SHA256 checksum: " +sha256sum $outfile.xz | sed "s/ $outfile.xz//" +# Clean up. +rm -rf $MASSOS diff --git a/utils/build-configs/kernel-config b/utils/build-configs/kernel-config index 6384081..1f77822 100644 --- a/utils/build-configs/kernel-config +++ b/utils/build-configs/kernel-config @@ -1,10 +1,10 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 5.17.3 Kernel Configuration +# Linux/x86 5.17.5 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="gcc (GCC) 11.2.0" +CONFIG_CC_VERSION_TEXT="gcc (MassOS GCC) 11.3.0" CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=110200 +CONFIG_GCC_VERSION=110300 CONFIG_CLANG_VERSION=0 CONFIG_AS_IS_GNU=y CONFIG_AS_VERSION=23800 @@ -352,6 +352,8 @@ CONFIG_X86_X2APIC=y CONFIG_X86_MPPARSE=y # CONFIG_GOLDFISH is not set CONFIG_RETPOLINE=y +CONFIG_CC_HAS_SLS=y +CONFIG_SLS=y CONFIG_X86_CPU_RESCTRL=y # CONFIG_X86_EXTENDED_PLATFORM is not set CONFIG_X86_INTEL_LPSS=y @@ -3089,7 +3091,6 @@ CONFIG_NET_DSA_XRS700X_I2C=m CONFIG_NET_DSA_XRS700X_MDIO=m CONFIG_NET_DSA_QCA8K=m CONFIG_NET_DSA_REALTEK=m -CONFIG_NET_DSA_REALTEK_SMI=m CONFIG_NET_DSA_SMSC_LAN9303=m CONFIG_NET_DSA_SMSC_LAN9303_I2C=m CONFIG_NET_DSA_SMSC_LAN9303_MDIO=m diff --git a/utils/builtins b/utils/builtins index c34f4a5..0ff5f69 100644 --- a/utils/builtins +++ b/utils/builtins @@ -238,6 +238,7 @@ libfs libgcrypt libgdata libglade +libglvnd libgpg-error libgphoto2 libgudev diff --git a/utils/etc/lsb-release b/utils/etc/lsb-release index c8ef4fe..547a75a 100644 --- a/utils/etc/lsb-release +++ b/utils/etc/lsb-release @@ -1,5 +1,5 @@ LSB_VERSION="0.9" DISTRIB_ID="MassOS" -DISTRIB_RELEASE="2022.04.2" -DISTRIB_CODENAME="2022.04.2" +DISTRIB_RELEASE="2022.05" +DISTRIB_CODENAME="2022.05" DISTRIB_DESCRIPTION="MassOS" diff --git a/utils/etc/os-release b/utils/etc/os-release index 503096f..f34c65b 100644 --- a/utils/etc/os-release +++ b/utils/etc/os-release @@ -1,10 +1,10 @@ NAME="MassOS" -VERSION="2022.04.2" -VERSION_ID="2022.04.2" +VERSION="2022.05" +VERSION_ID="2022.05" ID="massos" -PRETTY_NAME="MassOS 2022.04.2" -BUILD_ID="2022.04.2" -VERSION_CODENAME="2022.04.2" +PRETTY_NAME="MassOS 2022.05" +BUILD_ID="2022.05" +VERSION_CODENAME="2022.05" LOGO="massos-logo" HOME_URL="https://massos.org" DOCUMENTATION_URL="https://github.com/MassOS-Linux/MassOS/wiki" diff --git a/utils/massos-release b/utils/massos-release index 9b38786..524fbfe 100644 --- a/utils/massos-release +++ b/utils/massos-release @@ -1 +1 @@ -2022.04.2 +2022.05 diff --git a/utils/programs/mkinitramfs b/utils/programs/mkinitramfs index ad663f0..029cae9 100755 --- a/utils/programs/mkinitramfs +++ b/utils/programs/mkinitramfs @@ -39,5 +39,5 @@ else fi # Generate the initramfs. printf "Generating an initramfs for kernel $KVER... " -dracut -q --force "/boot/initrd.img-$KVER" "$KVER" +dracut -q --force "/boot/initramfs-$KVER.img" "$KVER" echo "Done!"