logo

etc_portage

Unnamed repository; edit this file 'description' to name the repository.
commit: f357139a192e249df9bb4b5e09ebdea501c8b6da
parent: 824e855ebce5f19697d280cb6c143932beace94b
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Sat, 28 Sep 2019 21:57:14 +0200

Update 2019-09-28

Diffstat:

Acategories10++++++++++
Menv/gcc2+-
Mmake.conf28+++++++++++++++++++---------
Amake.conf.catalyst16++++++++++++++++
Amake.profile2++
Mpackage.accept_keywords268+++++++++++++++++--------------------------------------------------------------
Mpackage.env/gcc13++++++++++++-
Mpackage.env/gcc-as1+
Mpackage.license5+++++
Mpackage.mask/NOPE1+
Mpackage.mask/fails2++
Apackage.provided1+
Mpackage.unmask3+++
Mpackage.use/01-deps1+
Mpackage.use/02-user21++++++++++++++++-----
Mpackage.use/04-constrait1+
Apackage.use/05-no-dbus1+
Mpackage.use/05-no-python246++++++++++++++++++++++------------------------
Apackage.use/06-tmp-dbus1+
Mpackage.use/x86_325+++++
Rpatches/net-misc/youtube-dl/8b703800ecb-pull-16105-rooster-teeth.diff -> patches.disabled/net-misc/youtube-dl/8b703800ecb-pull-16105-rooster-teeth.diff0
Apatches.disabled/sys-devel/clang/clang-0005-Enable-PIE-by-default-for-alpine-linux.patch43+++++++++++++++++++++++++++++++++++++++++++
Apatches/app-i18n/uim/uim-1.8.8_clang_fix.patch23+++++++++++++++++++++++
Apatches/app-office/abiword-3.0.2-r2/abiword-3.0.2-r2_cx11_syntax.patch13+++++++++++++
Apatches/app-text/evince/0001-Remove-last-used-directory-tracking.patch126+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/gui-wm/cage-0.1/61894994f3c784d9694de50eb3e7e70c3089410b.patch53+++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkitgtk-2.24.2/0001-TextCodec.cpp-Fix-snprintf.patch24++++++++++++++++++++++++
Apatches/net-libs/webkitgtk-2.24.2/0002-Defang-anchor-element-ping-attribute.patch87+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkitgtk-2.24.2/0003-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch55+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkitgtk-2.24.2/0004-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch26++++++++++++++++++++++++++
Apatches/net-libs/webkitgtk-2.24.2/0005-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch25+++++++++++++++++++++++++
Apatches/net-libs/webkitgtk-2.24.2/0006-Source-WebCore-page-RuntimeEnabledFeatures.h-hard-di.patch72++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkitgtk-2.24.2/0007-lanodan-TODO-New.patch84+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkitgtk-2.24.2/0008-defang-AdClickAttribution.patch309+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkitgtk-2.24.2/0009-lanodan-TODO-Beacon.patch24++++++++++++++++++++++++
Apatches/net-libs/webkitgtk-2.24.2/0010-WebKitWebViewGtk.cpp-Allow-the-user-to-override-the-.patch26++++++++++++++++++++++++++
Apatches/net-libs/webkitgtk-2.24.2/0011-fr.po-Stash.patch1126+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkitgtk-2.24.3/webkitgtk-2.24.2-no_gerror.patch24++++++++++++++++++++++++
Rpatches/sys-libs/libomp/FreeBSD_bug32279.patch -> patches/sys-libs/libomp-7.1.0/FreeBSD_bug32279.patch0
Apatches/sys-libs/libomp-8.0.1/FreeBSD_bug32279.patch14++++++++++++++
Apatches/x11-misc/redshift/redshift-9999_663_wayland.patch1015+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aprofile/package.mask5+++++
Aprofile/use.stable.mask1+
Arepo.postsync.d/example51+++++++++++++++++++++++++++++++++++++++++++++++++++
Arepo.postsync.d/q-reinit10++++++++++
Mrepos.conf/gentoo.conf1+
46 files changed, 3413 insertions(+), 252 deletions(-)

diff --git a/categories b/categories @@ -0,0 +1,10 @@ +cross-armv7a-hardfloat-linux-musleabi +cross-armv7hf-linux-musleabi +cross-armv7a-hardfloat-linux-musl +cross-armv7a-hardfloat-linux-gnueabi +cross-avr-musl +cross-avr +cross-arm-none-musleabi +cross-arm-none-eabi +cross-x86_64-pc-linux-musl +cross-arm-linux-musleabihf diff --git a/env/gcc b/env/gcc @@ -3,7 +3,7 @@ AR="gcc-ar" CC="gcc" CCC="g++" CXX="g++" -CFLAGS="-O2 -pipe -march=native -mtune=native -Wall -Wconversion -Wno-error=conversion -Wsign-conversion -Wno-error=sign-conversion -Wformat -Wformat-security" +#CFLAGS="-O2 -pipe -march=native -mtune=native -Wall -Wconversion -Wno-error=conversion -Wsign-conversion -Wno-error=sign-conversion -Wformat -Wformat-security" #CFLAGS="-O2 -pipe -march=native -mtune=native -Wall -Wextra -Wconversion -Wno-error=conversion -Wsign-conversion -Wno-error=sign-conversion -Wformat -Wformat-security" CXXFLAGS="${CFLAGS}" NM="gcc-nm" diff --git a/make.conf b/make.conf @@ -1,8 +1,10 @@ -PORTDIR="/usr/portage" -PKGDIR="${PORTDIR}/packages" -DISTDIR="${PORTDIR}/distfiles" -USE=" -sslv3 libzfs libressl X dane -handbook cjk -suid xinerama startup-notification alsa -geoloc -geolocation lcms opengl -dbus -libnotify -nsplugin -pin-upstream-blobs -policykit -kwallet socks5 fontconfig latex grammar spell cacert injection xcb luajit cryptsetup -cups upnp icu llvm libproxy gold eme-free -kdesu smp force-gtk3 jumbo-build sasl stunnel idn gtk3 -exiv2 -printsupport libkms" -USE="$USE jpeg gif png webp mod mikmod v4l wayland gles -gles2 egl clang libcxx acpi truetype -binary xft threads xcsecurity glamor -kde -gucharmap canna urandom lm_sensors d3d9 xa xvmc -vulkan vdpau vaapi (dri) nntp" +CONFIG_PROTECT="${CONFIG_PROTECT} /usr/share/X11/xkb" + +PORTDIR="/var/db/repos/gentoo" +PKGDIR="/var/cache/binpkgs" +DISTDIR="/var/cache/distfiles" +USE=" -sslv3 -webengine -gnome libzfs libressl X dane -handbook cjk -suid xinerama startup-notification alsa -geoloc -geolocation lcms opengl -dbus -libnotify -nsplugin -pin-upstream-blobs -policykit -kwallet socks5 fontconfig latex grammar spell cacert injection xcb luajit cryptsetup -cups upnp icu llvm libproxy gold eme-free -kdesu smp force-gtk3 jumbo-build sasl stunnel idn gtk3 -exiv2 -printsupport libkms" +USE="$USE jpeg gif png webp mod mikmod modplug v4l wayland gles -gles2 egl clang libcxx acpi truetype -binary xft threads xcsecurity glamor -kde -gucharmap canna urandom lm_sensors d3d9 xa xvmc -vulkan vdpau vaapi (dri) nntp gpm ibus" USE="$USE -luajittex -libunwind -pulseaudio" USE="$USE -pax_kernel" USE="$USE symlink xbuild developer" @@ -12,7 +14,7 @@ QEMU_SOFTMMU_TARGETS="x86_64 arm arm64 i386 sparc64" QEMU_USER_TARGETS="${QEMU_SOFTMMU_TARGETS}" LIRC_DEVICES="all" ALSA_CARDS="hda-intel usb-audio" -INPUT_DEVICES="evdev keyboard mouse libinput wacom" +INPUT_DEVICES="libinput wacom" VIDEO_CARDS="nouveau (nvidia) (virgl)" LUA_TARGETS="lua52" #LUA_IGNORE_TARGET_DUPLICATION="yes" # I’m a maintainer @@ -22,7 +24,7 @@ DOTNET_TARGETS="net46 net45 net40" USE="$USE ${DOTNET_TARGETS}" FEATURES="-nostrip splitdebug" -GRUB_PLATFORMS="pc" +GRUB_PLATFORMS="pc ieee1275" # ieee1275 is macppc OpenFirmware CPU_FLAGS_X86="mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" CHOST="x86_64-pc-linux-gnu" @@ -38,7 +40,15 @@ AS="llvm-as" CC="clang" CCC="clang++" CXX="clang++" -CXXFLAGS="-Qunused-arguments ${CXXFLAGS}" -CFLAGS="-Qunused-arguments ${CFLAGS}" +#CXXFLAGS="-Wno-error=unused-arguments ${CXXFLAGS}" # +#CFLAGS="-Wno-error=unused-arguments ${CFLAGS}" NM="llvm-nm" RANLIB="llvm-ranlib" + +# 17.1, remove on profile change in lanodanOverlay +SYMLINK_LIB=no +LIBDIR_x86=lib + +# Moving to HP dv7 +CFLAGS="-pipe -march=core2 -mtune=core2 -Wall -Wconversion -Wno-error=conversion -Wsign-conversion -Wno-error=sign-conversion -Wformat -Wformat-security -O2 -fno-strict-aliasing" +CXXFLAGS="${CFLAGS}" diff --git a/make.conf.catalyst b/make.conf.catalyst @@ -0,0 +1,16 @@ +# These settings were set by the catalyst build script that automatically +# built this stage. +# Please consult /usr/share/portage/config/make.conf.example for a more +# detailed example. +CFLAGS="-O2 -pipe" +CXXFLAGS="${CFLAGS}" +# WARNING: Changing your CHOST is not something that should be done lightly. +# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing. +CHOST="x86_64-pc-linux-gnu" +# These are the USE and USE_EXPAND flags that were used for +# buidling in addition to what is provided by the profile. +USE="bindist" +CPU_FLAGS_X86="mmx sse sse2" +PORTDIR="/usr/portage" +DISTDIR="${PORTDIR}/distfiles" +PKGDIR="${PORTDIR}/packages" diff --git a/make.profile b/make.profile @@ -0,0 +1 @@ +../../var/db/repos/lanodanOverlay/profiles/client/amd64-pc+ \ No newline at end of file diff --git a/package.accept_keywords b/package.accept_keywords @@ -3,61 +3,28 @@ net-im/tootle::lanodanOverlay ** app-editors/vis ~* www-plugins/passff ~* www-plugins/passff-host ~* +app-admin/pass-otp::gentoo ~* games-arcade/oshu ~* +app-shells/mksh ~* +app-misc/g810-led ~* -=dev-util/perf-4.1.5-r1 ~amd64 -=dev-libs/unibilium-1.1.4 ~amd64 -=dev-libs/libtermkey-0.19 ~amd64 -=sys-boot/grub-2.02 ~amd64 -~dev-python/cryptography-1.9 ~amd64 -=dev-python/asn1crypto-0.22.0 ~amd64 media-fonts/source-pro ~* -=media-libs/openal-1.18.0 ~amd64 -=media-sound/milkytracker-1.0.0 ~amd64 -=media-sound/ibniz-1.18 ~amd64 -=dev-lang/tcc-0.9.26-r3 ~amd64 sys-firmware/nvidia-firmware ~amd64 dev-util/plan9port ~amd64 media-fonts/unifont ~amd64 -=games-arcade/spout-1.3 ** +~games-arcade/spout-1.3 ~* =games-arcade/savagewheels-1.6.1-r1 ~amd64 www-client/weboob ~* app-i18n/unicode-data ~amd64 -=dev-libs/nspr-4.16 ~amd64 =net-misc/drawterm-9999 ~amd64 virtual/pmake ~amd64 =sys-devel/bmake-20170510 ~amd64 =dev-util/amtterm-1.6 ~amd64 -=dev-python/scandir-1.5 ~amd64 -=dev-python/pathlib2-2.3.0 ~amd64 -=app-shells/thefuck-3.18 ~amd64 -=app-i18n/translate-shell-0.9.6.2 ~* -media-gfx/krita::lanodanOverlay ~amd64 -=games-engines/love-0.10.2 ~amd64 -dev-util/shellcheck ~amd64 =media-gfx/arss-0.2.3-r1 ~amd64 -=media-libs/fontconfig-2.12.4 ~* =dev-python/scfbuild-0_p20170226 ~amd64 media-fonts/emojione-color-font ~amd64 =dev-util/svgo-0.7.2 ~amd64 -=sys-libs/binutils-libs-2.28.1 ~amd64 -=net-libs/tox-0.1.10 ~amd64 -=net-im/toxic-0.7.2-r1 ~amd64 -=net-im/qtox-1.11.0 ~amd64 -=dev-libs/capstone-3.0.5_rc2-r1 ~amd64 -=app-emulation/wine-mono-4.5.6 ~amd64 -=app-emulation/wine-1.8.7-r3 ~amd64 -=app-emulation/wine-gecko-2.40 ~amd64 -=app-emulation/wine-vanilla-1.8.7-r5 ~amd64 -=app-eselect/eselect-wine-1.5-r1 ~amd64 -=dev-libs/wayland-protocols-1.10 ~amd64 -~dev-python/urllib3-1.20 ~* # support for socks5h:// and socks4a:// -=net-proxy/redsocks-0.5 ~amd64 -app-text/texlive-core ~* -app-text/texlive ~* -dev-texlive/* ~* app-crypt/signify ~amd64 -app-shells/mksh ~* sci-libs/libticonv ~amd64 sci-libs/libtifiles2 ~amd64 sci-calculators/tilp2 ~amd64 @@ -65,60 +32,20 @@ sci-libs/libticalcs2 ~amd64 sci-libs/libticables2 ~amd64 ~dev-python/m2crypto-0.25.1 ~* =app-misc/bb-1.3.0_rc1-r4 ~amd64 -=app-crypt/johntheripper-1.7.9-r11 ~amd64 =net-vpn/iodine-0.7.0-r2 ~amd64 -=net-vpn/tinc-1.1_pre15 ~amd64 =net-wireless/reaver-1.4-r3 ~amd64 =app-misc/crunch-3.6 ~amd64 -=media-libs/libpng-1.6.32 ~amd64 -=dev-lang/mono-5.2.0.224 ~amd64 -=dev-libs/nss-3.33::gentoo ~amd64 -=media-gfx/gmic-2.0.0 ~* -=media-gfx/mypaint-1.2.1 ~* -=media-libs/libmypaint-1.3.0 ~amd64 -=media-libs/cimg-2.0.0 ~amd64 -=app-eselect/eselect-lua-2 ~amd64 +~media-gfx/mypaint-1.2.1 ~* +app-eselect/eselect-lua::lua ~amd64 ~dev-lang/lua-5.2.4 ~amd64 =dev-lang/lua-5.1.5-r101 ~amd64 =media-fonts/fira-mono-3.205 ~amd64 -=dev-texlive/texlive-metapost-2017 ~amd64 -=dev-python/unicodedata2-10.0.0 ~amd64 -=dev-python/defcon-0.3.4 ~amd64 -=dev-python/fonttools-3.15.1 ~amd64 -=dev-python/MutatorMath-2.0.4 ~amd64 -=dev-python/ufoLib-2.1.0 ~amd64 =dev-util/afdko-2.5.65781_p20170727 ~amd64 -=dev-python/pyclipper-1.0.6 ~amd64 -=dev-python/booleanOperations-0.7.1 ~amd64 -=dev-python/fontMath-0.4.3 ~amd64 -=dev-python/compositor-0_p20170303 ~amd64 -=dev-util/patchbin-20160208 ~amd64 -=app-emulation/wine-vanilla-1.8.7-r7 ~amd64 -=app-shells/thefuck-3.23 ~amd64 -=app-eselect/eselect-wine-1.5.2 ~amd64 -=dev-lua/mpack-1.0.4 ~amd64 -=dev-libs/msgpack-1.2.0 ~amd64 -=dev-libs/libvterm-0.0_pre20160305 ~amd64 -=app-editors/neovim-0.2.0 ~amd64 -=www-client/dillo-3.0.5-r1 ~amd64 -=www-client/torbrowser-52.4.0.7.0.5.1.1 ~amd64 -=www-client/qutebrowser-0.9.1 ~amd64 -=www-client/dooble-1.56c ~amd64 -=dev-python/pygments-2.2.0 ~amd64 -=www-client/midori-0.5.11-r2 ~amd64 =dev-python/pypeg2-2.15.2 ~amd64 -=games-misc/ponysay-3.0.2 ~amd64 =games-misc/doge-3.5.0 ~amd64 -=sys-auth/oath-toolkit-2.6.2 ~amd64 -=app-admin/pass-otp-1.0.0 ~amd64 -=sys-power/powerstat-0.02.11 ~amd64 =app-forensics/radamsa-0.5-r1 ~amd64 =app-admin/paxtest-0.9.15-r1 ~amd64 =app-forensics/scalpel-2.0 ~amd64 -=dev-util/radare2-2.0.1 ~* -=app-forensics/afl-2.51b ~amd64 -=net-libs/ldns-1.6.17-r1 ~* -=www-plugins/lightspark-0.8.0 ~amd64 ~dev-dotnet/msbuildcontrib-2014.06.05.01 ~amd64 ~dev-dotnet/dotnetzip-semverd-1.9.3-r1 ~amd64 =sys-fs/ecryptfs-utils-108-r1 ~amd64 @@ -132,110 +59,52 @@ sci-libs/libticables2 ~amd64 ~dev-dotnet/msbuild-defaulttasks-15.3-r2 ~amd64 ~dev-dotnet/msbuildtasks-1.5.0.240-r3 ~amd64 ~dev-dotnet/dotnetzip-semverd-1.9.3-r2 ~amd64 -=dev-lang/mono-5.4.0.201::lanodanOverlay ~* =sci-biology/ugene-1.20.0 ~amd64 -=net-vpn/tor-0.3.2.10 ~* =sys-apps/linux-misc-apps-4.4-r1 ~amd64 =games-roguelike/zangband-2.7.4c ~amd64 -=app-eselect/eselect-wine-1.5.3 ~amd64 -media-gfx/inkscape ~* -=media-gfx/scour-0.36 ~amd64 sys-apps/yarn ~amd64 net-libs/nodejs::libressl ~amd64 net-libs/nodejs::chaoslab ~amd64 -=dev-libs/libuv-1.17.0 ~amd64 -=sys-libs/db-5.1.29-r1 ~amd64 - -=www-apps/ctpp2-2.8.3:mva ~amd64 =games-misc/katawa-shoujo-1.3 ~amd64 -=www-apps/ctpp2-2.8.3 ~amd64 =net-analyzer/openbsd-netcat-1.105-r1 ~amd64 =dev-java/gradle-3.4 ~amd64 -=app-misc/freeplane-1.5.18 ~amd64 =x11-misc/qarma-1 ~amd64 -=dev-python/python-evdev-0.7.0 ~amd64 -=games-util/lutris-0.4.14 ~amd64 <=dev-lang/erlang-20.1 ~* =x11-plugins/purple-discord-9999 ~amd64 -=games-engines/scummvm-2.0.0 ~amd64 -=games-strategy/openra-20141029-r2 ~amd64 +~games-engines/scummvm-2.0.0 ~amd64 +=games-emulation/mupen64plus-2.5 ~amd64 =games-emulation/mupen64plus-rsp-hle-2.5 ~amd64 -=games-fps/xonotic-0.8.2 ~amd64 -=games-misc/katawa-shoujo-1.3.1 ~amd64 -=games-board/cockatrice-20170505 ~amd64 =games-emulation/mupen64plus-audio-sdl-2.5 ~amd64 =games-emulation/mupen64plus-input-sdl-2.5 ~amd64 =games-emulation/mupen64plus-core-2.5-r1 ~amd64 =games-emulation/mupen64plus-ui-console-2.5 ~amd64 -=games-action/noiz2sa-0.51a-r1 ~amd64 =games-emulation/mupen64plus-video-glide64mk2-2.5 ~amd64 =games-emulation/mupen64plus-video-rice-2.5 ~amd64 +=games-action/noiz2sa-0.51a-r1 ~amd64 +=games-fps/xonotic-0.8.2 ~amd64 +~games-misc/katawa-shoujo-1.3.1 ~amd64 -=games-emulation/m64py-0.2.3-r2 ~amd64 =dev-libs/d0_blind_id-1.0 ~amd64 -=games-misc/rfksay-0.1-r1 ~amd64 -=games-misc/funny-manpages-1.3_rc5-r1 ~amd64 -=games-emulation/mupen64plus-2.5 ~amd64 +~games-misc/rfksay-0.1-r1 ~amd64 +games-misc/funny-manpages ~amd64 =gnustep-base/gnustep-make-2.7.0 ~amd64 # Trying to fix Obj-C setup error… https://pouet.it/@lanodan_tmp/99248554766667217 =gnustep-base/libobjc2-1.8.1 ~amd64 -=sys-devel/slibtool-0.5.17 ~amd64 =net-misc/cadaver-0.23.3 ~amd64 -=app-misc/khard-0.11.4 ~amd64 -=dev-python/vdirsyncer-0.16.0-r1 ~amd64 -=dev-python/vobject-0.9.5 ~amd64 -=dev-python/requests-toolbelt-0.8.0 ~amd64 -=dev-python/atomicwrites-1.1.5-r2 ~amd64 =dev-python/click-threading-0.3.0 ~amd64 =dev-python/click-log-0.1.8 ~amd64 =app-misc/khal-0.9.7 ~amd64 -=dev-python/freezegun-0.3.9 ~amd64 -=net-misc/pussh-9999::lanodanOverlay ** - -=www-client/netsurf-3.6 ~amd64 -=media-libs/libnsbmp-0.1.4 ~amd64 -=dev-libs/libcss-0.7.0 ~amd64 -=dev-libs/libcss-0.6.1 ~amd64 -=media-libs/libnspsl-0.1.2 ~amd64 -=dev-libs/nsgenbind-0.5 ~amd64 -=dev-libs/libnsutils-0.0.3 ~amd64 -=media-libs/libnsgif-0.2.0 ~amd64 -=dev-libs/libnsfb-0.1.6 ~amd64 -=dev-libs/libwapcaplet-0.4.0 ~amd64 -=dev-libs/libutf8proc-1.3.1_p3 ~amd64 -=net-libs/libdom-0.3.2 ~amd64 -=media-libs/librosprite-0.1.2-r1 ~amd64 -=media-libs/libsvgtiny-0.1.6 ~amd64 - -=games-board/gnushogi-1.4.1-r1 ~amd64 -=games-board/xboard-4.8.0-r1 ~amd64 - -=dev-python/sip-4.19.6 ~amd64 -=sys-kernel/genkernel-3.5.2.5 ~amd64 -=app-misc/pax-utils-1.2.2-r2 ~amd64 sys-firmware/intel-microcode ~* -=media-gfx/opentoonz-1.2.0 ~amd64 =media-gfx/brlcad-7.24.2 ~amd64 =sci-libs/tnt-3.0.12 ~amd64 =games-action/bzflag-2.4.12 ~amd64 -=sys-apps/fwupdate-9 ~amd64 =sys-apps/fwts-17.02.00 ~amd64 -=dev-python/pyliblzma-0.5.3-r1 ~amd64 -=sys-apps/fwupd-1.0.3 ~amd64 -=media-plugins/calf-0.0.60-r1 ~amd64 -=media-sound/lmms-1.2.0_rc4 ~amd64 =games-engines/scummvm-tools-2.0.0-r1 ~amd64 -=mail-mta/sendmail-8.14.9-r1 ~amd64 -=dev-libs/cyrus-sasl-2.1.26-r11 ~amd64 -=mail-mta/opensmtpd-6.0.2_p1-r2 ~amd64 -=net-misc/stunnel-5.44 ~* media-fonts/fontawesome ~amd64 -=media-plugins/gst-plugins-zbar-1.12.3 ~amd64 -=net-dns/getdns-1.3.0 ~amd64 =dev-haskell/qtah-qt5-0.4.0 ~amd64 =dev-haskell/hoppy-std-0.3.0 ~amd64 =dev-haskell/qtah-generator-0.3.0 ~amd64 @@ -248,27 +117,15 @@ media-fonts/fontawesome ~amd64 =dev-haskell/hoppy-generator-0.2.0 ~amd64 =dev-haskell/hoppy-std-0.2.0 ~amd64 =dev-haskell/qtah-generator-0.1.2 ~amd64 -=dev-embedded/esptool-2.2 ~* =media-sound/sfxr-1.2.1 ~amd64 =dev-python/firmtool-1.3 ~amd64 games-visualnovel/doki-doki-litterature-club ~amd64 -=net-libs/serf-1.3.9 ~amd64 -=dev-lua/lpeg-1.0.1 ~amd64 -=net-misc/ntpsec-1.0.0-r2 ~amd64 -=app-editors/kakoune-0_pre20171120 ~amd64 mail-client/mutt ~* -=app-i18n/uim-1.8.6-r2 ~* -=net-vpn/wireguard-0.0.20180304 ~amd64 =dev-cpp/luabind-0.9 ~amd64 -app-admin/pass-otp::gentoo ~* <dev-util/svgo-9999 ~* =dev-ruby/nokogumbo-1.5.0 ~amd64 =dev-libs/gumbo-0.10.1 ~amd64 -dev-libs/libsass ~* -=net-misc/ntpsec-1.0.0-r6 ~amd64 -=dev-lang/erlang-20.3 ~* =games-misc/bsd-games-2.17-r5 ~amd64 -# required by app-text/base91-2.0.0::lanodanOverlay =dev-haskell/mono-traversable-1.0.8.1 ~amd64 =dev-haskell/vector-th-unbox-0.2.1.6 ~amd64 =dev-haskell/math-functions-0.2.1.0 ~amd64 @@ -277,66 +134,30 @@ dev-libs/libsass ~* =x11-misc/slop-7.4 ~amd64 dev-util/cargo::libressl ~* =games-arcade/tinymania-9999 ** - =sys-fs/zfs-auto-snapshot-1.2.4 ~amd64 -dev-lang/elixir ~amd64 - -=www-plugins/browserpass-2.0.21 ~amd64 -=dev-libs/nss-3.37 ~amd64 -=dev-util/cargo-0.27.0 ~amd64 -=dev-libs/granite-0.5.0 ~amd64 -media-gfx/gmic::4nykey ~* -=media-libs/cimg-2.2.3 ~amd64 =media-fonts/ahem-1.0 ~amd64 =media-libs/cimg-2.3.1 ~amd64 app-misc/neofetch ~* -~media-gfx/maim-5.5.1 ~amd64 +~media-gfx/maim-5.5.3 ~amd64 =dev-libs/libb64-1.2.1 ~amd64 -=dev-util/sysdig-0.21.0 ~amd64 -=sys-devel/lld-6.0.1 ~amd64 -=dev-util/lldb-6.0.1 ~amd64 -dev-lang/rust:stable ~* app-portage/gverify ~* -=dev-libs/nss-3.38 ~amd64 -=dev-libs/nspr-4.19 ~amd64 -=dev-util/cargo-0.29.0 ~amd64 -=www-client/luakit-2017.08.10 ~amd64 -www-client/luakit ** =games-arcade/osu-lazer-9999.999.9 ~amd64 =games-arcade/crack-attack-1.1.14-r2 ~amd64 -=dev-lang/python-3.7.0 ~amd64 -=app-misc/g810-led-0.2.7 ~amd64 =media-video/ffmpeg-4.0.2 ~amd64 -=app-text/mandoc-1.14.4 ~amd64 -net-im/gajim::tastytea ~* =dev-perl/Crypt-OpenSSL-ECDSA-0.80.0 ~amd64 =dev-perl/Crypt-OpenSSL-EC-1.310.0 ~amd64 net-vpn/i2pd ~amd64 =dev-cpp/websocketpp-0.8.1 ~amd64 -=games-strategy/freeciv-2.6.0 ~amd64 -=dev-go/go-tools-0_pre20180817 ~amd64 -=dev-go/go-text-0.3.0 ~amd64 -=dev-go/go-crypto-0_pre20180816 ~amd64 -=dev-go/go-net-0_pre20180816 ~amd64 -=dev-go/go-sys-0_pre20180816 ~amd64 +~games-strategy/freeciv-2.6.0 ~amd64 games-emulation/pcsxr ~* -dev-qt/qtnetwork::libressl ~* +<dev-qt/qtnetwork-5.13::libressl ~* media-fonts/twemoji-color-font::jorgicio ~* net-misc/youtube-dl ~* =dev-python/phonenumbers-8.3.1 ~amd64 -=dev-python/arrow-0.12.1 ~amd64 =dev-python/py-gfm-0.1.1 ~amd64 -=dev-python/humanize-0.5.1 ~amd64 =virtual/gradle-0 ~amd64 =app-eselect/eselect-gradle-0.1 ~amd64 -=dev-util/meson-0.48.2 ~amd64 -=app-text/scdoc-1.5.2 ~amd64 -=dev-libs/json-c-0.13.1-r1 ~amd64 -# move dev-libs/wlroots gui-libs/wlroots -gui-libs/wlroots ~amd64 -# move dev-libs/sway gui-wm/sway -gui-wm/sway ~amd64 =games-board/mah-jong-1.14-r1 ~amd64 sys-libs/netbsd-csu ~* @@ -346,21 +167,11 @@ gnustep-base/gnustep-base ~* =x11-libs/pixman-0.36.0 ~* =games-puzzle/pingus-0.7.6-r1 ~amd64 =media-fonts/polarsys-b612-fonts-1.003 ~amd64 -=dev-python/cssutils-1.0.2 ~amd64 -=dev-python/precis-i18n-1.0.0 ~amd64 -=dev-python/python-axolotl-curve25519-0.4.1_p2-r1 ~amd64 -=dev-python/python-axolotl-0.1.42-r1 ~amd64 -=media-video/ffmpeg-4.1.1 ~amd64 -=dev-libs/openssl-1.0.2q-r200 ~amd64 -~dev-python/pipenv-9.0.0 ~* =dev-python/pythonz-bd-1.11.4 ~amd64 =dev-python/pew-1.1.1 ~amd64 =dev-python/shutilwhich-1.1.0 ~amd64 =dev-python/resumable-urlretrieve-0.1.5 ~amd64 =dev-python/m2crypto-0.31.0-r1 ~* -=gui-apps/swaylock-1.3 ~amd64 -=gui-apps/swayidle-1.2 ~amd64 -=app-text/scdoc-1.9.3-r1 ~amd64 =dev-libs/libgit2-0.28.1 ~* =dev-python/pygit2-0.27.4 ~* <dev-libs/libgit2-0.28.0 ~* @@ -379,7 +190,6 @@ sec-policy/apparmor-profiles ~amd64 =dev-haskell/hayland-0.1.0.1 ~amd64 =dev-haskell/utility-ht-0.0.14 ~amd64 =dev-haskell/storable-record-0.0.4 ~amd64 -~sys-devel/llvm-6.0.1 ~* =dev-util/meson-0.49.2 ~* ~x11-libs/libdrm-2.4.97 ~* # Required by x11-drivers/xf86-video-nouveau (apparently) <media-plugins/gst-plugins-libav-1.14.5 ~* @@ -405,10 +215,9 @@ sec-policy/apparmor-profiles ~amd64 =dev-haskell/config-schema-0.5.0.1-r1 ~amd64 =dev-haskell/unliftio-core-0.1.2.0 ~amd64 =dev-haskell/th-abstraction-0.2.11.0 ~amd64 -=dev-haskell/stm-2.5.0.0 ~amd64 =dev-haskell/formatting-6.3.4 ~amd64 =dev-haskell/invariant-0.5.1 ~amd64 -=dev-haskell/stm-2.4.5.0 ~amd64 +<dev-haskell/stm-2.5 ~amd64 media-fonts/unifont::gentoo ~* media-fonts/symbola::gentoo ~* media-fonts/symbola::flussence ~* @@ -416,13 +225,48 @@ media-fonts/symbola::flussence ~* =www-client/badwolf-9999 ** =net-dns/c-ares-1.15.0 ~amd64 =net-libs/nghttp2-1.37.0 ~amd64 -=net-libs/http-parser-2.9.0-r1 ~amd64 =dev-libs/libuv-1.27.0 ~amd64 dev-haskell/cpphs ~* =x11-terms/st-0.8.2 ~* =media-libs/libpng-1.6.36 ~* x11-drivers/xf86-video-nouveau ~* -media-libs/mesa ~* -~sys-devel/llvmgold-7 ~amd64 -~sys-devel/llvm-7.0.1 ~amd64 +<media-libs/mesa-19.1 ~* +=gui-apps/swaybg-1.0 ~amd64 +<x11-wm/xmonad-0.15 ~* +<x11-wm/xmonad-contrib-0.15 ~* +www-client/epiphany ~* +~net-libs/http-parser-2.9.2 ~amd64 +gui-wm/cage ** +=games-fps/gzdoom-4.1.1 ~amd64 +=games-fps/doom-data-1-r2 ~amd64 +=dev-python/python-dateutil-2.7.5 ~amd64 +=dev-python/idna-2.8 ~amd64 +=games-emulation/dgen-sdl-1.33-r1 ~amd64 +=games-emulation/sdlmame-0.209 ~amd64 +=games-emulation/mednafen-0.9.46 ~amd64 +dev-perl/Net-SSLeay::flussence ~* +=dev-lang/rust-1.35.0 ~amd64 x11-libs/gtk+::flussence ~* +~dev-libs/libgit2-0.28.2 +=net-misc/streamlink-1.0.0 ~amd64 +=dev-libs/libfmt-5.3.0 ~amd64 +=dev-libs/spdlog-1.3.1 ~amd64 +~media-video/mpv-0.29.1 ~* +=app-benchmarks/glmark2-2014.03 ~amd64 +mail-client/aerc ~* +www-client/michabo ** +=x11-misc/keynav-20150730 ~amd64 +dev-libs/glib::gentoo ~* +=app-i18n/ibus-1.5.20::gentoo ~* +dev-libs/granite::tastytea ~* +~dev-perl/Net-SSLeay-1.880.0::gentoo ~* +=dev-libs/angelscript-2.33.0 ~amd64 +=games-action/supertuxkart-1.0 ~amd64 +=media-libs/libopenglrecorder-0.1.0 ~amd64 +gui-wm/sway ~* +gui-libs/wlroots ~* +=games-puzzle/monsterz-0.7.1-r4 ~amd64 +=sys-boot/grub-2.04-r1 ~amd64 + +dev-haskell/glib::haskell ~* +dev-haskell/gtk2hs-buildtools::haskell ~* diff --git a/package.env/gcc b/package.env/gcc @@ -22,7 +22,7 @@ =sys-devel/gcc-7.3.0-r3:7.3.0/7.3.0::gentoo gcc =sys-firmware/seabios-1.10.1::gentoo gcc =sys-firmware/seabios-1.10.2::gentoo gcc -=sys-libs/glibc-2.27-r6:2.2/2.2::gentoo gcc +sys-libs/glibc::gentoo gcc =x11-libs/fltk-1.3.3-r3::gentoo gcc =x11-libs/gtk+-2.24.31-r1::gentoo gcc =app-misc/g810-led-0.3.1::lanodanOverlay gcc @@ -35,3 +35,14 @@ =sys-libs/glibc-2.28-r5::gentoo gcc =app-shells/mksh-57-r1 gcc =media-libs/mesa-18.3.6::gentoo gcc +~app-text/openjade-1.3.2 gcc +sys-devel/llvm:7 gcc +sys-devel/clang:7 gcc +sys-devel/clang-runtime:7 gcc +sys-devel/clang-common:7 gcc +sys-libs/libcxx gcc +sys-libs/libcxxabi gcc +=games-emulation/dosbox-0.74_p20160629::gentoo gcc +~dev-libs/elfutils-0.176 gcc +=sys-firmware/seabios-1.12.0:0/0::gentoo gcc +=sys-firmware/ipxe-1.0.0_p20190728::gentoo gcc diff --git a/package.env/gcc-as b/package.env/gcc-as @@ -2,3 +2,4 @@ =app-emulation/qemu-3.1.0-r1::gentoo gcc-as =app-emulation/qemu-3.1.0-r4::gentoo gcc-as +~app-emulation/qemu-4.0.0 gcc-as diff --git a/package.license b/package.license @@ -26,3 +26,8 @@ games-arcade/stepmania CC-BY-NC-4.0 games-arcade/oshu CC-BY-NC-4.0 games-arcade/osu-lazer CC-BY-NC-4.0 games-emulation/snes9x Snes9x +sys-kernel/linux-firmware linux-fw-redistributable +app-dicts/myspell-ru myspell-ru_RU-AlexanderLebedev +app-doc/single-unix-specification sus4-copyright +games-fps/doom-data freedist +sys-firmware/b43-firmware Broadcom diff --git a/package.mask/NOPE b/package.mask/NOPE @@ -1,3 +1,4 @@ media-sound/audacity # See https://social.hacktivis.me/objects/08872b3a-a670-49b3-94d8-2181642329f5 media-fonts/firacode # unreadable ligatures, anti-dyslexia dev-util/electron dev-util/electron +dev-python/unicodedata2 diff --git a/package.mask/fails b/package.mask/fails @@ -1 +1,3 @@ =media-gfx/exiv2-0.26_p20180319::gentoo +=sys-boot/grub-2.02-r4 +=net-firewall/nftables-0.9.0-r5:0/0::gentoo diff --git a/package.provided b/package.provided @@ -0,0 +1 @@ +sys-apps/less-9999 diff --git a/package.unmask b/package.unmask @@ -3,3 +3,6 @@ sys-kernel/hardened-sources dev-libs/openssl::lanodanOverlay =media-video/ffmpeg-4.0.2 =media-video/mpv-0.29.0 + +# GRblblbl +media-gfx/exiv2 diff --git a/package.use/01-deps b/package.use/01-deps @@ -70,3 +70,4 @@ x11-libs/libxcb xkb app-accessibility/brltty python dev-libs/liblouis python app-accessibility/speech-dispatcher python +media-libs/gegl cairo # required by media-gfx/gimp diff --git a/package.use/02-user b/package.use/02-user @@ -28,7 +28,6 @@ dev-lang/erlang dirty-schedulers tk wxwidgets dev-lang/luajit lua52compat dev-lang/python tk dev-lang/ruby -rdoc -dev-lang/rust clang libcxx dev-libs/capstone python dev-libs/libgcrypt o-flag-munging dev-libs/nss utils @@ -66,11 +65,11 @@ media-libs/mlt ffmpeg xml sdl qt5 kdenlive melt media-libs/phonon -vlc media-libs/sdl-mixer flac mp3 vorbis mad media-libs/sdl-sound flac mikmod mp3 -media-plugins/gst-plugins-meta aac flac modplug mp3 ogg opus vpx http libass wavpack x264 mpeg theora ffmpeg +media-plugins/gst-plugins-meta aac flac mp3 ogg opus libass wavpack mpeg theora ffmpeg vorbis http media-sound/lmms fluidsynth ogg sdl media-sound/ncmpc search-screen song-screen artist-screen media-sound/sbagen mp3 vorbis -media-video/ffmpeg alsa gnutls libass libdrm mp3 opus vorbis vpx x265 sdl +media-video/ffmpeg alsa gnutls libass libdrm mp3 opus vorbis vpx sdl media-video/mpv drm dvd lcms tools vaapi archive cli net-analyzer/wireshark tfshark lua -gtk net-dns/getdns stubby @@ -92,7 +91,6 @@ sys-apps/firejail x11 sys-apps/groff -X sys-apps/smartmontools -daemon -caps sys-boot/grub device-mapper -sys-devel/clang default-compiler-rt default-libcxx sys-devel/clang-runtime crt sys-devel/llvm clang =sys-firmware/edk2-ovmf-2017_pre20170505 binary # Fails to build, needs patch for -fPIC @@ -119,9 +117,22 @@ x11-wm/dwm savedconfig x11-wm/xmonad -default-term x11-wm/xmonad* doc app-editors/vis lpeg lua -media-plugins/gst-plugins-meta mp3 mpeg ogg opus theora vorbis vpx wavpack x264 lame www-client/badwolf savedconfig x11-libs/gtk+ gtk-doc sys-apps/openrc init gui-wm/cage xwayland gui-libs/wlroots rootston x11-backend +dev-lang/erlang doc +media-libs/freetype -infinality cleartype_hinting +net-libs/glib-networking gnutls +x11-base/xorg-server suid +gui-apps/waybar network +gui-apps/waybar udev +app-shells/bash -net +sys-apps/iproute2 -iptables +dev-libs/glib gtk-doc +mail-client/aerc html +net-libs/webkit-gtk -wpe +games-action/supertuxkart nettle recorder +media-gfx/graphicsmagick imagemagick +media-libs/mesa lm-sensors diff --git a/package.use/04-constrait b/package.use/04-constrait @@ -1 +1,2 @@ dev-libs/opensc -pcsc-lite +<sys-fs/cryptsetup-2.2.1 -openssl diff --git a/package.use/05-no-dbus b/package.use/05-no-dbus @@ -0,0 +1 @@ +dev-qt/qtgui -ibus diff --git a/package.use/05-no-python2 b/package.use/05-no-python2 @@ -1,24 +1,22 @@ -=dev-vcs/git-2.19.2::gentoo -python -=dev-vcs/git-2.21.0::gentoo -python -=dev-python/m2crypto-0.31.0-r1 python_targets_python2_7 -=dev-python/setuptools-40.6.3 python_targets_python2_7 -=dev-python/certifi-2018.4.16 python_targets_python2_7 -=virtual/python-typing-0-r1 python_targets_python2_7 -=dev-python/typing-3.6.2-r1 python_targets_python2_7 -=app-emulation/xen-tools-4.10.3-r2::gentoo python_targets_python2_7 -=dev-python/lxml-4.2.5 python_targets_python2_7 -=dev-python/pypam-0.5.0-r3 python_targets_python2_7 -=dev-python/bz2file-0.98::gentoo python_targets_python2_7 -=dev-python/pygtk-2.24.0-r4::gentoo python_targets_python2_7 -=dev-python/pygobject-2.28.6-r55::gentoo python_targets_python2_7 -=net-libs/nodejs-10.15.0::libressl python_targets_python2_7 -=dev-vcs/mercurial-4.9::gentoo python_targets_python2_7 -=games-engines/renpy-6.99.12.4-r3::gentoo python_targets_python2_7 -=dev-python/misaka-1.0.2::gentoo python_targets_python2_7 -=dev-python/rst2pdf-0.93-r3::gentoo python_targets_python2_7 -=dev-util/gtk-doc-1.25-r1::gentoo python_targets_python2_7 -=dev-util/itstool-2.0.2::gentoo python_targets_python2_7 -=x11-misc/arandr-0.1.9::gentoo python_targets_python2_7 -=sys-devel/clang-6.0.1::gentoo python_targets_python2_7 -=dev-python/pycairo-1.17.0-r1 python_targets_python2_7 # required by pygtk (argument) -=net-libs/nodejs-10.15.3::libressl python_targets_python2_7 +~app-emulation/xen-tools-4.10.3::gentoo python_targets_python2_7 +~dev-python/bz2file-0.98::gentoo python_targets_python2_7 +~dev-python/certifi-2018.4.16 python_targets_python2_7 +~dev-python/m2crypto-0.31.0 python_targets_python2_7 +~dev-python/misaka-1.0.2::gentoo python_targets_python2_7 +~dev-python/pycairo-1.17.0 python_targets_python2_7 # required by pygtk (argument) +~dev-python/pypam-0.5.0 python_targets_python2_7 +~dev-python/setuptools-40.6.3 python_targets_python2_7 +~dev-python/typing-3.6.2 python_targets_python2_7 +~dev-util/gtk-doc-1.25::gentoo python_targets_python2_7 +~dev-vcs/git-2.21.0::gentoo -python +~games-engines/renpy-6.99.12.4::gentoo python_targets_python2_7 +~net-libs/nodejs-10.15.3::libressl python_targets_python2_7 +~sys-devel/clang-6.0.1::gentoo python_targets_python2_7 +~virtual/python-typing-0 python_targets_python2_7 +~x11-misc/arandr-0.1.9::gentoo python_targets_python2_7 +~sys-devel/clang-7.1.0 python_targets_python2_7 +~sys-devel/clang-8.0.1 python_targets_python2_7 +dev-python/certifi python_targets_python2_7 # required by dev-python/setuptools +~games-puzzle/monsterz-0.7.1 python_targets_python2_7 +dev-python/pygame python_targets_python2_7 # required by games-puzzle/monsterz +dev-python/numpy python_targets_python2_7 # required by games-puzzle/monsterz diff --git a/package.use/06-tmp-dbus b/package.use/06-tmp-dbus @@ -0,0 +1 @@ +dev-libs/glib dbus diff --git a/package.use/x86_32 b/package.use/x86_32 @@ -31,3 +31,8 @@ x11-libs/libXvMC abi_x86_32 x11-libs/libXxf86vm abi_x86_32 x11-libs/libdrm abi_x86_32 x11-libs/libxcb abi_x86_32 +sys-libs/gpm abi_x86_32 +x11-libs/libva-vdpau-driver abi_x86_32 +x11-libs/libva abi_x86_32 +x11-libs/libvdpau abi_x86_32 +dev-libs/wayland abi_x86_32 # # required by media-libs/mesa[wayland] diff --git a/patches/net-misc/youtube-dl/8b703800ecb-pull-16105-rooster-teeth.diff b/patches.disabled/net-misc/youtube-dl/8b703800ecb-pull-16105-rooster-teeth.diff diff --git a/patches.disabled/sys-devel/clang/clang-0005-Enable-PIE-by-default-for-alpine-linux.patch b/patches.disabled/sys-devel/clang/clang-0005-Enable-PIE-by-default-for-alpine-linux.patch @@ -0,0 +1,43 @@ +From: Natanael Copa <ncopa@alpinelinux.org> +From: Jakub Jirutka <jakub@jirutka.cz> +Date: Sun, 16 Apr 2017 16:49:00 +0100 +Subject: [PATCH] Enable PIE by default for Alpine Linux + +Alpine Linux uses PIE by default. + +https://github.com/alpinelinux/aports/blob/master/main/clang/clang-0005-Enable-PIE-by-default-for-alpine-linux.patch + +--- a/lib/Driver/Tools.cpp ++++ b/lib/Driver/Tools.cpp +@@ -9258,7 +9258,9 @@ + if (!D.SysRoot.empty()) + CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot)); + +- if (IsPIE) ++ if (Args.hasArg(options::OPT_nopie)) ++ CmdArgs.push_back("-nopie"); ++ else if (IsPIE) + CmdArgs.push_back("-pie"); + + CmdArgs.push_back("--eh-frame-hdr"); +--- a/test/Driver/pic.c ++++ b/test/Driver/pic.c +@@ -244,6 +244,18 @@ + // RUN: %clang %s -target i386-pc-openbsd -nopie -### 2>&1 \ + // RUN: | FileCheck %s --check-prefix=CHECK-NOPIE-LD + // ++// On Alpine Linux, we want similar PIE-by-default behavior ++// RUN: %clang -c %s -target x86_64-alpine-linux-musl -### 2>&1 \ ++// RUN: | FileCheck %s --check-prefix=CHECK-PIE2 ++// RUN: %clang -c %s -target i686-alpine-linux-musl -### 2>&1 \ ++// RUN: | FileCheck %s --check-prefix=CHECK-PIE2 ++// RUN: %clang -c %s -target armv6-alpine-linux-musleabihf -### 2>&1 \ ++// RUN: | FileCheck %s --check-prefix=CHECK-PIE2 ++// RUN: %clang -c %s -target armv7-alpine-linux-musleabihf -### 2>&1 \ ++// RUN: | FileCheck %s --check-prefix=CHECK-PIE2 ++// RUN: %clang %s -target x86_64-alpine-linux-musl -nopie -### 2>&1 \ ++// RUN: | FileCheck %s --check-prefix=CHECK-NOPIE-LD ++// + // On Android PIC is enabled by default + // RUN: %clang -c %s -target i686-linux-android -### 2>&1 \ + // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 diff --git a/patches/app-i18n/uim/uim-1.8.8_clang_fix.patch b/patches/app-i18n/uim/uim-1.8.8_clang_fix.patch @@ -0,0 +1,23 @@ +From bb25aac568359efbfb68e52dd8d9ee85e65d754b Mon Sep 17 00:00:00 2001 +From: Haelwenn Monnier <lanodan@users.noreply.github.com> +Date: Thu, 25 Oct 2018 09:10:16 +0200 +Subject: [PATCH] xim/main.cpp: FIx build against clang + +main.cpp:68:55: error: invalid suffix on literal; C++11 requires a space between literal and identifier +--- + xim/main.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xim/main.cpp b/xim/main.cpp +index a0b0beceb..c5818ca4a 100644 +--- a/xim/main.cpp ++++ b/xim/main.cpp +@@ -65,7 +65,7 @@ int g_option_mask; + int scr_width, scr_height; + int host_byte_order; + +-#define VERSION_NAME "uim-xim under the way! Version "PACKAGE_VERSION"\n" ++#define VERSION_NAME "uim-xim under the way! Version " PACKAGE_VERSION "\n" + const char *version_name=VERSION_NAME; + const char *usage= + "--help , --version :Show usage or version\n" diff --git a/patches/app-office/abiword-3.0.2-r2/abiword-3.0.2-r2_cx11_syntax.patch b/patches/app-office/abiword-3.0.2-r2/abiword-3.0.2-r2_cx11_syntax.patch @@ -0,0 +1,13 @@ +diff --git a/src/wp/ap/gtk/ap_UnixApp.cpp b/src/wp/ap/gtk/ap_UnixApp.cpp +index 061a304..260f8e5 100644 +--- a/src/wp/ap/gtk/ap_UnixApp.cpp ++++ b/src/wp/ap/gtk/ap_UnixApp.cpp +@@ -863,7 +863,7 @@ static bool is_so (const char *file) { + if (len < (strlen(G_MODULE_SUFFIX) + 2)) // this is ".so" and at least one char for the filename + return false; + const char *suffix = file+(len-3); +- if(0 == strcmp (suffix, "."G_MODULE_SUFFIX)) ++ if(0 == strcmp (suffix, "." G_MODULE_SUFFIX)) + return true; + return false; + } diff --git a/patches/app-text/evince/0001-Remove-last-used-directory-tracking.patch b/patches/app-text/evince/0001-Remove-last-used-directory-tracking.patch @@ -0,0 +1,126 @@ +From 57308187053270e625a32a7861d726e7dd1a39c9 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Sat, 15 Jun 2019 01:07:06 +0200 +Subject: [PATCH] Remove last-used directory tracking + +--- + data/org.gnome.Evince.gschema.xml.in | 8 ---- + shell/ev-window.c | 63 ++++------------------------ + 2 files changed, 7 insertions(+), 64 deletions(-) + +diff --git a/data/org.gnome.Evince.gschema.xml.in b/data/org.gnome.Evince.gschema.xml.in +index fda312b..c0881bf 100644 +--- a/data/org.gnome.Evince.gschema.xml.in ++++ b/data/org.gnome.Evince.gschema.xml.in +@@ -18,14 +18,6 @@ + <_summary>Automatically reload the document</_summary> + <_description>The document is automatically reloaded on file change.</_description> + </key> +- <key name="document-directory" type="ms"> +- <default>nothing</default> +- <_summary>The URI of the directory last used to open or save a document</_summary> +- </key> +- <key name="pictures-directory" type="ms"> +- <default>nothing</default> +- <_summary>The URI of the directory last used to save a picture</_summary> +- </key> + <key name="page-cache-size" type="u"> + <default>50</default> + <_summary>Page cache size in MiB</_summary> +diff --git a/shell/ev-window.c b/shell/ev-window.c +index cfed16c..d9f90af 100644 +--- a/shell/ev-window.c ++++ b/shell/ev-window.c +@@ -263,8 +263,6 @@ struct _EvWindowPrivate { + #define GS_OVERRIDE_RESTRICTIONS "override-restrictions" + #define GS_PAGE_CACHE_SIZE "page-cache-size" + #define GS_AUTO_RELOAD "auto-reload" +-#define GS_LAST_DOCUMENT_DIRECTORY "document-directory" +-#define GS_LAST_PICTURES_DIRECTORY "pictures-directory" + #define GS_ALLOW_LINKS_CHANGE_ZOOM "allow-links-change-zoom" + + #define SIDEBAR_DEFAULT_SIZE 132 +@@ -2557,51 +2555,16 @@ ev_window_reload_document (EvWindow *ev_window, + } + } + +-static const gchar * +-get_settings_key_for_directory (GUserDirectory directory) +-{ +- switch (directory) { +- case G_USER_DIRECTORY_PICTURES: +- return GS_LAST_PICTURES_DIRECTORY; +- case G_USER_DIRECTORY_DOCUMENTS: +- default: +- return GS_LAST_DOCUMENT_DIRECTORY; +- } +-} +- + static void + ev_window_file_chooser_restore_folder (EvWindow *window, + GtkFileChooser *file_chooser, + const gchar *uri, + GUserDirectory directory) + { +- const gchar *dir; +- gchar *folder_uri; +- +- g_settings_get (ev_window_ensure_settings (window), +- get_settings_key_for_directory (directory), +- "ms", &folder_uri); +- if (folder_uri == NULL && uri != NULL) { +- GFile *file, *parent; +- +- file = g_file_new_for_uri (uri); +- parent = g_file_get_parent (file); +- g_object_unref (file); +- if (parent) { +- folder_uri = g_file_get_uri (parent); +- g_object_unref (parent); +- } +- } +- +- if (folder_uri) { +- gtk_file_chooser_set_current_folder_uri (file_chooser, folder_uri); +- } else { +- dir = g_get_user_special_dir (directory); +- gtk_file_chooser_set_current_folder (file_chooser, +- dir ? dir : g_get_home_dir ()); +- } +- +- g_free (folder_uri); ++ (void)window; ++ (void)file_chooser; ++ (void)uri; ++ (void)directory; + } + + static void +@@ -2609,21 +2572,9 @@ ev_window_file_chooser_save_folder (EvWindow *window, + GtkFileChooser *file_chooser, + GUserDirectory directory) + { +- gchar *uri, *folder; +- +- folder = gtk_file_chooser_get_current_folder (file_chooser); +- if (g_strcmp0 (folder, g_get_user_special_dir (directory)) == 0) { +- /* Store 'nothing' if the folder is the default one */ +- uri = NULL; +- } else { +- uri = gtk_file_chooser_get_current_folder_uri (file_chooser); +- } +- g_free (folder); +- +- g_settings_set (ev_window_ensure_settings (window), +- get_settings_key_for_directory (directory), +- "ms", uri); +- g_free (uri); ++ (void)window; ++ (void)file_chooser; ++ (void)directory; + } + + static void +-- +2.21.0 + diff --git a/patches/gui-wm/cage-0.1/61894994f3c784d9694de50eb3e7e70c3089410b.patch b/patches/gui-wm/cage-0.1/61894994f3c784d9694de50eb3e7e70c3089410b.patch @@ -0,0 +1,53 @@ +From 61894994f3c784d9694de50eb3e7e70c3089410b Mon Sep 17 00:00:00 2001 +From: Jan Beich <jbeich@FreeBSD.org> +Date: Thu, 25 Apr 2019 07:08:04 +0000 +Subject: [PATCH] Cage: drop root on startup like Sway + +wlroots may need setuid to run on DRM if built without (e)logind +support. +--- + cage.c | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +diff --git a/cage.c b/cage.c +index d4cf210..9c7098a 100644 +--- a/cage.c ++++ b/cage.c +@@ -65,6 +65,25 @@ spawn_primary_client(char *argv[], pid_t *pid_out) + return true; + } + ++static bool ++drop_permissions(void) ++{ ++ if (getuid() != geteuid() || getgid() != getegid()) { ++ if (setuid(getuid()) != 0 || setgid(getgid()) != 0) { ++ wlr_log(WLR_ERROR, "Unable to drop root, refusing to start"); ++ return false; ++ } ++ } ++ ++ if (setuid(0) != -1) { ++ wlr_log(WLR_ERROR, "Unable to drop root (we shouldn't be able to " ++ "restore it after setuid), refusing to start"); ++ return false; ++ } ++ ++ return true; ++} ++ + static int + handle_signal(int signal, void *data) + { +@@ -184,6 +203,11 @@ main(int argc, char *argv[]) + goto end; + } + ++ if (!drop_permissions()) { ++ ret = 1; ++ goto end; ++ } ++ + renderer = wlr_backend_get_renderer(server.backend); + wlr_renderer_init_wl_display(renderer, server.wl_display); + diff --git a/patches/net-libs/webkitgtk-2.24.2/0001-TextCodec.cpp-Fix-snprintf.patch b/patches/net-libs/webkitgtk-2.24.2/0001-TextCodec.cpp-Fix-snprintf.patch @@ -0,0 +1,24 @@ +From 0c051cbef11d0cbe32ea649d03524baadc514413 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Fri, 5 Apr 2019 04:08:33 +0200 +Subject: [PATCH 01/11] TextCodec.cpp: Fix snprintf + +--- + Source/WebCore/platform/text/TextCodec.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Source/WebCore/platform/text/TextCodec.cpp b/Source/WebCore/platform/text/TextCodec.cpp +index 86b89cfc..4be00cee 100644 +--- a/Source/WebCore/platform/text/TextCodec.cpp ++++ b/Source/WebCore/platform/text/TextCodec.cpp +@@ -28,6 +28,7 @@ + #include "TextCodec.h" + + #include <array> ++#include <stdio.h> + + namespace WebCore { + +-- +2.21.0 + diff --git a/patches/net-libs/webkitgtk-2.24.2/0002-Defang-anchor-element-ping-attribute.patch b/patches/net-libs/webkitgtk-2.24.2/0002-Defang-anchor-element-ping-attribute.patch @@ -0,0 +1,87 @@ +From 72fe4c2fbd5185d2ff069671d5d628494a37bb06 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Fri, 5 Apr 2019 09:03:39 +0200 +Subject: [PATCH 02/11] Defang anchor element ping attribute + +--- + Source/WebCore/html/HTMLAnchorElement.cpp | 11 -------- + Source/WebCore/loader/PingLoader.cpp | 34 ----------------------- + 2 files changed, 45 deletions(-) + +diff --git a/Source/WebCore/html/HTMLAnchorElement.cpp b/Source/WebCore/html/HTMLAnchorElement.cpp +index 37d98a33..815ed314 100644 +--- a/Source/WebCore/html/HTMLAnchorElement.cpp ++++ b/Source/WebCore/html/HTMLAnchorElement.cpp +@@ -363,15 +363,6 @@ bool HTMLAnchorElement::isLiveLink() const + + void HTMLAnchorElement::sendPings(const URL& destinationURL) + { +- if (!document().frame()) +- return; +- +- if (!hasAttributeWithoutSynchronization(pingAttr) || !document().settings().hyperlinkAuditingEnabled()) +- return; +- +- SpaceSplitString pingURLs(attributeWithoutSynchronization(pingAttr), false); +- for (unsigned i = 0; i < pingURLs.size(); i++) +- PingLoader::sendPing(*document().frame(), document().completeURL(pingURLs[i]), destinationURL); + } + + #if USE(SYSTEM_PREVIEW) +@@ -493,8 +484,6 @@ void HTMLAnchorElement::handleClick(Event& event) + ASSERT(!adClickAttribution || adClickAttribution->url().isNull()); + + frame->loader().urlSelected(completedURL, effectiveTarget, &event, LockHistory::No, LockBackForwardList::No, shouldSendReferrer, document().shouldOpenExternalURLsPolicyToPropagate(), newFrameOpenerPolicy, downloadAttribute, systemPreviewInfo, WTFMove(adClickAttribution)); +- +- sendPings(completedURL); + } + + // Falls back to using <base> element's target if the anchor does not have one. +diff --git a/Source/WebCore/loader/PingLoader.cpp b/Source/WebCore/loader/PingLoader.cpp +index 2c0b2a3b..9225fdde 100644 +--- a/Source/WebCore/loader/PingLoader.cpp ++++ b/Source/WebCore/loader/PingLoader.cpp +@@ -113,40 +113,6 @@ void PingLoader::loadImage(Frame& frame, const URL& url) + // http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#hyperlink-auditing + void PingLoader::sendPing(Frame& frame, const URL& pingURL, const URL& destinationURL) + { +- ASSERT(frame.document()); +- +- if (!pingURL.protocolIsInHTTPFamily()) +- return; +- +- ResourceRequest request(pingURL); +- if (processContentExtensionRulesForLoad(frame, request, ResourceType::Raw)) +- return; +- +- auto& document = *frame.document(); +- document.contentSecurityPolicy()->upgradeInsecureRequestIfNeeded(request, ContentSecurityPolicy::InsecureRequestType::Load); +- +- request.setHTTPMethod("POST"); +- request.setHTTPContentType("text/ping"); +- request.setHTTPBody(FormData::create("PING")); +- request.setHTTPHeaderField(HTTPHeaderName::CacheControl, "max-age=0"); +- +- HTTPHeaderMap originalRequestHeader = request.httpHeaderFields(); +- +- frame.loader().addExtraFieldsToSubresourceRequest(request); +- +- auto& sourceOrigin = document.securityOrigin(); +- FrameLoader::addHTTPOriginIfNeeded(request, sourceOrigin.toString()); +- request.setHTTPHeaderField(HTTPHeaderName::PingTo, destinationURL); +- if (!SecurityPolicy::shouldHideReferrer(pingURL, frame.loader().outgoingReferrer())) { +- request.setHTTPHeaderField(HTTPHeaderName::PingFrom, document.url()); +- if (!sourceOrigin.isSameSchemeHostPort(SecurityOrigin::create(pingURL).get())) { +- String referrer = SecurityPolicy::generateReferrerHeader(document.referrerPolicy(), pingURL, frame.loader().outgoingReferrer()); +- if (!referrer.isEmpty()) +- request.setHTTPReferrer(referrer); +- } +- } +- +- startPingLoad(frame, request, WTFMove(originalRequestHeader), ShouldFollowRedirects::Yes, ContentSecurityPolicyImposition::DoPolicyCheck); + } + + void PingLoader::sendViolationReport(Frame& frame, const URL& reportURL, Ref<FormData>&& report, ViolationReportType reportType) +-- +2.21.0 + diff --git a/patches/net-libs/webkitgtk-2.24.2/0003-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch b/patches/net-libs/webkitgtk-2.24.2/0003-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch @@ -0,0 +1,55 @@ +From 3a70f0ed0d9dfa714a7fb67b5be6a0267a5b5ead Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Fri, 2 Nov 2018 17:59:57 +0100 +Subject: [PATCH 03/11] + Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js: Remove %c + support in the console + +--- + .../UserInterface/Views/ConsoleMessageView.js | 23 ------------------- + 1 file changed, 23 deletions(-) + +diff --git a/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js b/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js +index 4cf58fd3..f53f9ab7 100644 +--- a/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js ++++ b/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js +@@ -674,26 +674,6 @@ WI.ConsoleMessageView = class ConsoleMessageView extends WI.Object + } + + var currentStyle = null; +- function styleFormatter(obj) +- { +- currentStyle = {}; +- var buffer = document.createElement("span"); +- buffer.setAttribute("style", obj.description); +- for (var i = 0; i < buffer.style.length; i++) { +- var property = buffer.style[i]; +- if (isWhitelistedProperty(property)) +- currentStyle[property] = buffer.style[property]; +- } +- } +- +- function isWhitelistedProperty(property) +- { +- for (var prefix of ["background", "border", "color", "font", "line", "margin", "padding", "text"]) { +- if (property.startsWith(prefix) || property.startsWith("-webkit-" + prefix)) +- return true; +- } +- return false; +- } + + // Firebug uses %o for formatting objects. + var formatters = {}; +@@ -705,9 +685,6 @@ WI.ConsoleMessageView = class ConsoleMessageView extends WI.Object + formatters.i = integerFormatter; + formatters.d = integerFormatter; + +- // Firebug uses %c for styling the message. +- formatters.c = styleFormatter; +- + // Support %O to force object formatting, instead of the type-based %o formatting. + formatters.O = parameterFormatter.bind(this, true); + +-- +2.21.0 + diff --git a/patches/net-libs/webkitgtk-2.24.2/0004-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch b/patches/net-libs/webkitgtk-2.24.2/0004-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch @@ -0,0 +1,26 @@ +From 697444bbce31d382a557e27175c3d6919765064b Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 6 Nov 2018 15:09:22 +0100 +Subject: [PATCH 04/11] CMakeLists.txt: Explain which variable is used to + define a port if undefined + +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 31adc449..03b80113 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -48,7 +48,7 @@ set(PORT "NOPORT" CACHE STRING "choose which WebKit port to build (one of ${ALL_ + + list(FIND ALL_PORTS ${PORT} RET) + if (${RET} EQUAL -1) +- message(FATAL_ERROR "Please choose which WebKit port to build (one of ${ALL_PORTS})") ++ message(FATAL_ERROR "Please define a PORT to build with (one of ${ALL_PORTS})") + endif () + + string(TOLOWER ${PORT} WEBKIT_PORT_DIR) +-- +2.21.0 + diff --git a/patches/net-libs/webkitgtk-2.24.2/0005-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch b/patches/net-libs/webkitgtk-2.24.2/0005-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch @@ -0,0 +1,25 @@ +From 4663c2402292cc912eaaa1b6d53b354bd038ef36 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 6 Nov 2018 15:13:28 +0100 +Subject: [PATCH 05/11] Source/cmake/OptionsGTK.cmake: Add note on fixing CMake + defaults + +--- + Source/cmake/OptionsGTK.cmake | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake +index 43e1ab2f..0fe64ce4 100644 +--- a/Source/cmake/OptionsGTK.cmake ++++ b/Source/cmake/OptionsGTK.cmake +@@ -72,6 +72,7 @@ endif () + # Public options specific to the GTK+ port. Do not add any options here unless + # there is a strong reason we should support changing the value of the option, + # and the option is not relevant to any other WebKit ports. ++# XXX: Do not default to optionnal stuff like USE_LIBSECRET to REQUIRED + WEBKIT_OPTION_DEFINE(ENABLE_GLES2 "Whether to enable OpenGL ES 2.0." PUBLIC ${ENABLE_GLES2_DEFAULT}) + WEBKIT_OPTION_DEFINE(ENABLE_GTKDOC "Whether or not to use generate gtkdoc." PUBLIC OFF) + WEBKIT_OPTION_DEFINE(ENABLE_INTROSPECTION "Whether to enable GObject introspection." PUBLIC ON) +-- +2.21.0 + diff --git a/patches/net-libs/webkitgtk-2.24.2/0006-Source-WebCore-page-RuntimeEnabledFeatures.h-hard-di.patch b/patches/net-libs/webkitgtk-2.24.2/0006-Source-WebCore-page-RuntimeEnabledFeatures.h-hard-di.patch @@ -0,0 +1,72 @@ +From 7f250f3d15d1f27e1fc778f08638c642590485b2 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Sun, 2 Dec 2018 02:33:31 +0100 +Subject: [PATCH 06/11] Source/WebCore/page/RuntimeEnabledFeatures.h: + hard-disable some features + +--- + Source/WebCore/page/RuntimeEnabledFeatures.h | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/Source/WebCore/page/RuntimeEnabledFeatures.h b/Source/WebCore/page/RuntimeEnabledFeatures.h +index 0f7e7a50..2030412e 100644 +--- a/Source/WebCore/page/RuntimeEnabledFeatures.h ++++ b/Source/WebCore/page/RuntimeEnabledFeatures.h +@@ -50,13 +50,13 @@ public: + bool displayContentsEnabled() const { return m_isDisplayContentsEnabled; } + + void setLinkPreloadEnabled(bool isEnabled) { m_isLinkPreloadEnabled = isEnabled; } +- bool linkPreloadEnabled() const { return m_isLinkPreloadEnabled; } ++ bool linkPreloadEnabled() const { return false; } + + void setLinkPrefetchEnabled(bool isEnabled) { m_isLinkPrefetchEnabled = isEnabled; } +- bool linkPrefetchEnabled() const { return m_isLinkPrefetchEnabled; } ++ bool linkPrefetchEnabled() const { return false; } + + void setMediaPreloadingEnabled(bool isEnabled) { m_isMediaPreloadingEnabled = isEnabled; } +- bool mediaPreloadingEnabled() const { return m_isMediaPreloadingEnabled; } ++ bool mediaPreloadingEnabled() const { return false; } + + void setResourceTimingEnabled(bool isEnabled) { m_isResourceTimingEnabled = isEnabled; } + bool resourceTimingEnabled() const { return m_isResourceTimingEnabled; } +@@ -70,19 +70,19 @@ public: + bool shadowDOMEnabled() const { return m_isShadowDOMEnabled; } + + void setInputEventsEnabled(bool isEnabled) { m_inputEventsEnabled = isEnabled; } +- bool inputEventsEnabled() const { return m_inputEventsEnabled; } ++ bool inputEventsEnabled() const { return false; } + + void setInteractiveFormValidationEnabled(bool isEnabled) { m_isInteractiveFormValidationEnabled = isEnabled; } + bool interactiveFormValidationEnabled() const { return m_isInteractiveFormValidationEnabled; } + + void setCustomElementsEnabled(bool areEnabled) { m_areCustomElementsEnabled = areEnabled; } +- bool customElementsEnabled() const { return m_areCustomElementsEnabled; } ++ bool customElementsEnabled() const { return false; } + + void setMenuItemElementEnabled(bool isEnabled) { m_isMenuItemElementEnabled = isEnabled; } + bool menuItemElementEnabled() const { return m_isMenuItemElementEnabled; } + + void setDirectoryUploadEnabled(bool isEnabled) { m_isDirectoryUploadEnabled = isEnabled; } +- bool directoryUploadEnabled() const { return m_isDirectoryUploadEnabled; } ++ bool directoryUploadEnabled() const { return false; } + + #if ENABLE(DARK_MODE_CSS) + void setDarkModeCSSEnabled(bool isEnabled) { m_isDarkModeCSSEnabled = isEnabled; } +@@ -320,12 +320,12 @@ public: + + #if ENABLE(ENCRYPTED_MEDIA) + void setEncryptedMediaAPIEnabled(bool isEnabled) { m_encryptedMediaAPIEnabled = isEnabled; } +- bool encryptedMediaAPIEnabled() const { return m_encryptedMediaAPIEnabled; } ++ bool encryptedMediaAPIEnabled() const { return false; } + #endif + + #if ENABLE(LEGACY_ENCRYPTED_MEDIA) + void setLegacyEncryptedMediaAPIEnabled(bool isEnabled) { m_legacyEncryptedMediaAPIEnabled = isEnabled; } +- bool legacyEncryptedMediaAPIEnabled() const { return m_legacyEncryptedMediaAPIEnabled; } ++ bool legacyEncryptedMediaAPIEnabled() const { return false; } + #endif + + #if ENABLE(SERVICE_WORKER) +-- +2.21.0 + diff --git a/patches/net-libs/webkitgtk-2.24.2/0007-lanodan-TODO-New.patch b/patches/net-libs/webkitgtk-2.24.2/0007-lanodan-TODO-New.patch @@ -0,0 +1,84 @@ +From f2e5c2495f52000b88c94f54c39845ac9541856c Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Sun, 2 Dec 2018 11:11:22 +0100 +Subject: [PATCH 07/11] lanodan-TODO: New + +--- + lanodan-TODO | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 65 insertions(+) + create mode 100644 lanodan-TODO + +diff --git a/lanodan-TODO b/lanodan-TODO +new file mode 100644 +index 00000000..d8acc42c +--- /dev/null ++++ b/lanodan-TODO +@@ -0,0 +1,65 @@ ++## Javascript ++- [x] Console Styling (%c) ++- [ ] GeoLocation ++- [ ] AudioAPI ++- [ ] Gamepad (runtime, off by default): https://www.w3.org/TR/gamepad/ ++- [ ] Service Workers (runtime, off by default) ++- [ ] IndexedDB (runtime, off by default) ++- [ ] Object Storage (runtime, off by default) ++- [ ] canvas (runtime, off by default) ++- [ ] WebGL (runtime, off by default) ++- [ ] Sensors ++ - [x] Battery (WebKit: Not Considering) ++ - [ ] microphone (runtime, off by default) ++ - [ ] video(webcam, screen, …) (runtime, off by default) ++ - … ++- [x] Web Bluetooth (WebKit: Not Considering) ++- [x] Web MIDI (WebKit: Not Considering) ++- [x] Web USB (WebKit: Not Considering) ++- [ ] Input Events ++ - [ ] Pointer Events ++ - [ ] Scroll Events ++ - [ ] Focus Events ++ - … ++- [ ] Timings ++ - Navigation Timing ++ - Resource Timing ++ - Performance Timeline: https://w3c.github.io/performance-timeline/ ++ - High Resolution Time ++ - … ++- [ ] Viewport size ++- [ ] Elements size ++- [ ] multimedia player stats (FPS, caching, …) ++- [ ] Payment Request: https://www.w3.org/TR/payment-request/ ++- [ ] Encoding Standard (explore): https://encoding.spec.whatwg.org/ ++ ++## Headers ++- [ ] referer ++- [ ] user-agent (spoof Intel Apple one?) ++- [ ] Cookies (runtime, off by default) ++ ++## HTML ++- [ ] noscript ++- [x] Link ping ++- [x] Link prefetch ++- [x] Link preloading ++- [x] Media preloading ++- [x] custom elements ++- [ ] DNS prefetch ++- [ ] srcset (images) ++ ++## CSS ++- [ ] Engine-specific extensions ++- [ ] WebFont (runtime, off by default) ++ ++## TLS ++- [ ] Disable known-bad ciphers ++- [ ] TOFU? ++- [ ] DANE ++ ++## Codebase ++- [ ] Remove Third-Party directory ++ ++ ++- https://webkit.org/status/ ++- https://github.com/WICG +-- +2.21.0 + diff --git a/patches/net-libs/webkitgtk-2.24.2/0008-defang-AdClickAttribution.patch b/patches/net-libs/webkitgtk-2.24.2/0008-defang-AdClickAttribution.patch @@ -0,0 +1,309 @@ +From 69ca1a17fda572ee42e925ecd1c948adfcbc7b09 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Fri, 5 Apr 2019 06:44:31 +0200 +Subject: [PATCH 08/11] defang AdClickAttribution + +--- + Source/WebCore/html/HTMLAnchorElement.cpp | 52 -------------------- + Source/WebCore/html/HTMLAnchorElement.h | 3 -- + Source/WebCore/html/HTMLAnchorElement.idl | 2 - + Source/WebCore/loader/AdClickAttribution.cpp | 42 +--------------- + Source/WebCore/loader/AdClickAttribution.h | 48 +----------------- + Source/WebCore/loader/FrameLoader.cpp | 3 -- + Source/WebCore/page/RuntimeEnabledFeatures.h | 4 +- + lanodan-TODO | 7 +-- + 8 files changed, 10 insertions(+), 151 deletions(-) + +diff --git a/Source/WebCore/html/HTMLAnchorElement.cpp b/Source/WebCore/html/HTMLAnchorElement.cpp +index 815ed314..9f3691e1 100644 +--- a/Source/WebCore/html/HTMLAnchorElement.cpp ++++ b/Source/WebCore/html/HTMLAnchorElement.cpp +@@ -24,7 +24,6 @@ + #include "config.h" + #include "HTMLAnchorElement.h" + +-#include "AdClickAttribution.h" + #include "DOMTokenList.h" + #include "ElementIterator.h" + #include "EventHandler.h" +@@ -388,52 +387,6 @@ bool HTMLAnchorElement::isSystemPreviewLink() const + } + #endif + +-Optional<AdClickAttribution> HTMLAnchorElement::parseAdClickAttribution() const +-{ +- using Campaign = AdClickAttribution::Campaign; +- using Source = AdClickAttribution::Source; +- using Destination = AdClickAttribution::Destination; +- +- if (!RuntimeEnabledFeatures::sharedFeatures().adClickAttributionEnabled() || !UserGestureIndicator::processingUserGesture()) +- return WTF::nullopt; +- +- if (!hasAttributeWithoutSynchronization(adcampaignidAttr) && !hasAttributeWithoutSynchronization(addestinationAttr)) +- return WTF::nullopt; +- +- auto adCampaignIDAttr = attributeWithoutSynchronization(adcampaignidAttr); +- auto adDestinationAttr = attributeWithoutSynchronization(addestinationAttr); +- +- if (adCampaignIDAttr.isEmpty() || adDestinationAttr.isEmpty()) { +- document().addConsoleMessage(MessageSource::Other, MessageLevel::Warning, "Both adcampaignid and addestination need to be set for Ad Click Attribution to work."_s); +- return WTF::nullopt; +- } +- +- RefPtr<Frame> frame = document().frame(); +- if (!frame || !frame->isMainFrame()) { +- document().addConsoleMessage(MessageSource::Other, MessageLevel::Warning, "Ad Click Attribution is only supported in the main frame."_s); +- return WTF::nullopt; +- } +- +- auto adCampaignID = parseHTMLNonNegativeInteger(adCampaignIDAttr); +- if (!adCampaignID) { +- document().addConsoleMessage(MessageSource::Other, MessageLevel::Warning, "adcampaignid can not be converted to a non-negative integer which is required for Ad Click Attribution."_s); +- return WTF::nullopt; +- } +- +- if (adCampaignID.value() >= AdClickAttribution::MaxEntropy) { +- document().addConsoleMessage(MessageSource::Other, MessageLevel::Warning, makeString("adcampaignid must have a non-negative value less than ", AdClickAttribution::MaxEntropy, " for Ad Click Attribution.")); +- return WTF::nullopt; +- } +- +- URL adDestinationURL { URL(), adDestinationAttr }; +- if (!adDestinationURL.isValid() || !adDestinationURL.protocolIsInHTTPFamily()) { +- document().addConsoleMessage(MessageSource::Other, MessageLevel::Warning, "adddestination could not be converted to a valid HTTP-family URL."_s); +- return WTF::nullopt; +- } +- +- return AdClickAttribution { Campaign(adCampaignID.value()), Source(document().domain()), Destination(adDestinationURL.host().toString()) }; +-} +- + void HTMLAnchorElement::handleClick(Event& event) + { + event.setDefaultHandled(); +@@ -478,11 +431,6 @@ void HTMLAnchorElement::handleClick(Event& event) + else if (hasRel(Relation::NoOpener) || (RuntimeEnabledFeatures::sharedFeatures().blankAnchorTargetImpliesNoOpenerEnabled() && equalIgnoringASCIICase(effectiveTarget, "_blank"))) + newFrameOpenerPolicy = NewFrameOpenerPolicy::Suppress; + +- auto adClickAttribution = parseAdClickAttribution(); +- // A matching conversion event needs to happen before the complete ad click attributionURL can be +- // created. Thus, it should be empty for now. +- ASSERT(!adClickAttribution || adClickAttribution->url().isNull()); +- + frame->loader().urlSelected(completedURL, effectiveTarget, &event, LockHistory::No, LockBackForwardList::No, shouldSendReferrer, document().shouldOpenExternalURLsPolicyToPropagate(), newFrameOpenerPolicy, downloadAttribute, systemPreviewInfo, WTFMove(adClickAttribution)); + } + +diff --git a/Source/WebCore/html/HTMLAnchorElement.h b/Source/WebCore/html/HTMLAnchorElement.h +index 61315ced..7f41385c 100644 +--- a/Source/WebCore/html/HTMLAnchorElement.h ++++ b/Source/WebCore/html/HTMLAnchorElement.h +@@ -32,7 +32,6 @@ + + namespace WebCore { + +-class AdClickAttribution; + class DOMTokenList; + + // Link relation bitmask values. +@@ -97,8 +96,6 @@ private: + + void sendPings(const URL& destinationURL); + +- Optional<AdClickAttribution> parseAdClickAttribution() const; +- + void handleClick(Event&); + + enum EventType { +diff --git a/Source/WebCore/html/HTMLAnchorElement.idl b/Source/WebCore/html/HTMLAnchorElement.idl +index 0d21fc7d..b7f59462 100644 +--- a/Source/WebCore/html/HTMLAnchorElement.idl ++++ b/Source/WebCore/html/HTMLAnchorElement.idl +@@ -19,8 +19,6 @@ + */ + + interface HTMLAnchorElement : HTMLElement { +- [CEReactions=NotNeeded, EnabledAtRuntime=AdClickAttribution, Reflect] attribute DOMString adcampaignid; +- [CEReactions=NotNeeded, EnabledAtRuntime=AdClickAttribution, Reflect] attribute DOMString addestination; + [CEReactions=NotNeeded, Reflect] attribute DOMString charset; + [CEReactions=NotNeeded, Reflect] attribute DOMString coords; + [CEReactions=NotNeeded, Conditional=DOWNLOAD_ATTRIBUTE, EnabledAtRuntime=DownloadAttribute, Reflect] attribute DOMString download; +diff --git a/Source/WebCore/loader/AdClickAttribution.cpp b/Source/WebCore/loader/AdClickAttribution.cpp +index bdc06393..2dab9617 100644 +--- a/Source/WebCore/loader/AdClickAttribution.cpp ++++ b/Source/WebCore/loader/AdClickAttribution.cpp +@@ -34,59 +34,21 @@ namespace WebCore { + + bool AdClickAttribution::isValid() const + { +- return m_conversion +- && m_conversion.value().isValid() +- && m_campaign.isValid() +- && !m_source.registrableDomain.isEmpty() +- && !m_destination.registrableDomain.isEmpty() +- && m_earliestTimeToSend; ++ return false; + } + + void AdClickAttribution::setConversion(Conversion&& conversion) + { +- if (!conversion.isValid() || (m_conversion && m_conversion->priority > conversion.priority)) +- return; +- +- m_conversion = WTFMove(conversion); +- // 24-48 hour delay before sending. This helps privacy since the conversion and the attribution +- // requests are detached and the time of the attribution does not reveal the time of the conversion. +- m_earliestTimeToSend = m_timeOfAdClick + 24_h + Seconds(randomNumber() * (24_h).value()); ++ return; + } + + URL AdClickAttribution::url() const + { +- if (!isValid()) +- return URL(); +- +- StringBuilder builder; +- builder.appendLiteral("https://"); +- builder.append(m_source.registrableDomain); +- builder.appendLiteral("/.well-known/ad-click-attribution/"); +- builder.appendNumber(m_conversion.value().data); +- builder.append('/'); +- builder.appendNumber(m_campaign.id); +- +- URL url { URL(), builder.toString() }; +- if (url.isValid()) +- return url; +- + return URL(); + } + + URL AdClickAttribution::referrer() const + { +- if (!isValid()) +- return URL(); +- +- StringBuilder builder; +- builder.appendLiteral("https://"); +- builder.append(m_destination.registrableDomain); +- builder.append('/'); +- +- URL url { URL(), builder.toString() }; +- if (url.isValid()) +- return url; +- + return URL(); + } + +diff --git a/Source/WebCore/loader/AdClickAttribution.h b/Source/WebCore/loader/AdClickAttribution.h +index 34af2f2d..af6bf69c 100644 +--- a/Source/WebCore/loader/AdClickAttribution.h ++++ b/Source/WebCore/loader/AdClickAttribution.h +@@ -150,41 +150,7 @@ void AdClickAttribution::encode(Encoder& encoder) const + template<class Decoder> + Optional<AdClickAttribution> AdClickAttribution::decode(Decoder& decoder) + { +- Optional<CampaignId> campaignId; +- decoder >> campaignId; +- if (!campaignId) +- return WTF::nullopt; +- +- Optional<String> sourceRegistrableDomain; +- decoder >> sourceRegistrableDomain; +- if (!sourceRegistrableDomain) +- return WTF::nullopt; +- +- Optional<String> destinationRegistrableDomain; +- decoder >> destinationRegistrableDomain; +- if (!destinationRegistrableDomain) +- return WTF::nullopt; +- +- Optional<WallTime> timeOfAdClick; +- decoder >> timeOfAdClick; +- if (!timeOfAdClick) +- return WTF::nullopt; +- +- Optional<Optional<Conversion>> conversion; +- decoder >> conversion; +- if (!conversion) +- return WTF::nullopt; +- +- Optional<Optional<WallTime>> earliestTimeToSend; +- decoder >> earliestTimeToSend; +- if (!earliestTimeToSend) +- return WTF::nullopt; +- +- AdClickAttribution attribution { Campaign { WTFMove(*campaignId) }, Source { WTFMove(*sourceRegistrableDomain) }, Destination { WTFMove(*destinationRegistrableDomain) } }; +- attribution.m_conversion = WTFMove(*conversion); +- attribution.m_earliestTimeToSend = WTFMove(*earliestTimeToSend); +- +- return attribution; ++ return WTF::nullopt; + } + + template<class Encoder> +@@ -196,17 +162,7 @@ void AdClickAttribution::Conversion::encode(Encoder& encoder) const + template<class Decoder> + Optional<AdClickAttribution::Conversion> AdClickAttribution::Conversion::decode(Decoder& decoder) + { +- Optional<ConversionData> data; +- decoder >> data; +- if (!data) +- return WTF::nullopt; +- +- Optional<PriorityValue> priority; +- decoder >> priority; +- if (!priority) +- return WTF::nullopt; +- +- return Conversion { WTFMove(*data), Priority { WTFMove(*priority) } }; ++ return WTF::nullopt; + } + + } // namespace WebCore +diff --git a/Source/WebCore/loader/FrameLoader.cpp b/Source/WebCore/loader/FrameLoader.cpp +index 766b7e1e..8563f462 100644 +--- a/Source/WebCore/loader/FrameLoader.cpp ++++ b/Source/WebCore/loader/FrameLoader.cpp +@@ -1376,9 +1376,6 @@ void FrameLoader::loadURL(FrameLoadRequest&& frameLoadRequest, const String& ref + NavigationAction action { frameLoadRequest.requester(), request, frameLoadRequest.initiatedByMainFrame(), newLoadType, isFormSubmission, event, frameLoadRequest.shouldOpenExternalURLsPolicy(), frameLoadRequest.downloadAttribute() }; + action.setLockHistory(lockHistory); + action.setLockBackForwardList(frameLoadRequest.lockBackForwardList()); +- if (adClickAttribution && m_frame.isMainFrame()) +- action.setAdClickAttribution(WTFMove(*adClickAttribution)); +- + if (!targetFrame && !effectiveFrameName.isEmpty()) { + action = action.copyWithShouldOpenExternalURLsPolicy(shouldOpenExternalURLsPolicyToApply(m_frame, frameLoadRequest)); + policyChecker().checkNewWindowPolicy(WTFMove(action), WTFMove(request), WTFMove(formState), effectiveFrameName, [this, allowNavigationToInvalidURL, openerPolicy, completionHandler = completionHandlerCaller.release()] (const ResourceRequest& request, WeakPtr<FormState>&& formState, const String& frameName, const NavigationAction& action, ShouldContinue shouldContinue) mutable { +diff --git a/Source/WebCore/page/RuntimeEnabledFeatures.h b/Source/WebCore/page/RuntimeEnabledFeatures.h +index 2030412e..f693ebd3 100644 +--- a/Source/WebCore/page/RuntimeEnabledFeatures.h ++++ b/Source/WebCore/page/RuntimeEnabledFeatures.h +@@ -341,8 +341,8 @@ public: + void setCSSLogicalEnabled(bool isEnabled) { m_CSSLogicalEnabled = isEnabled; } + bool cssLogicalEnabled() const { return m_CSSLogicalEnabled; } + +- bool adClickAttributionEnabled() const { return m_adClickAttributionEnabled; } +- void setAdClickAttributionEnabled(bool isEnabled) { m_adClickAttributionEnabled = isEnabled; } ++ bool adClickAttributionEnabled() const { return false; } ++ void setAdClickAttributionEnabled(bool isEnabled) { } + + WEBCORE_EXPORT static RuntimeEnabledFeatures& sharedFeatures(); + +diff --git a/lanodan-TODO b/lanodan-TODO +index d8acc42c..ef507ac4 100644 +--- a/lanodan-TODO ++++ b/lanodan-TODO +@@ -40,9 +40,10 @@ + + ## HTML + - [ ] noscript +-- [x] Link ping +-- [x] Link prefetch +-- [x] Link preloading ++- [x] Anchor ping ++- [x] Anchor prefetch ++- [x] Anchor preloading ++- [x] Anchor AdClickAttribution + - [x] Media preloading + - [x] custom elements + - [ ] DNS prefetch +-- +2.21.0 + diff --git a/patches/net-libs/webkitgtk-2.24.2/0009-lanodan-TODO-Beacon.patch b/patches/net-libs/webkitgtk-2.24.2/0009-lanodan-TODO-Beacon.patch @@ -0,0 +1,24 @@ +From 6e06790f6c5fa8b32e155daa89c89af3f2c77d06 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Fri, 5 Apr 2019 08:29:03 +0200 +Subject: [PATCH 09/11] lanodan-TODO: Beacon + +--- + lanodan-TODO | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/lanodan-TODO b/lanodan-TODO +index ef507ac4..86487345 100644 +--- a/lanodan-TODO ++++ b/lanodan-TODO +@@ -32,6 +32,7 @@ + - [ ] multimedia player stats (FPS, caching, …) + - [ ] Payment Request: https://www.w3.org/TR/payment-request/ + - [ ] Encoding Standard (explore): https://encoding.spec.whatwg.org/ ++- [ ] Beacon API: https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API + + ## Headers + - [ ] referer +-- +2.21.0 + diff --git a/patches/net-libs/webkitgtk-2.24.2/0010-WebKitWebViewGtk.cpp-Allow-the-user-to-override-the-.patch b/patches/net-libs/webkitgtk-2.24.2/0010-WebKitWebViewGtk.cpp-Allow-the-user-to-override-the-.patch @@ -0,0 +1,26 @@ +From 3c98087b8b5f6b631a9032a15ce1b4fc4c8ae81f Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Thu, 20 Jun 2019 23:31:40 +0200 +Subject: [PATCH 10/11] WebKitWebViewGtk.cpp: Allow the user to override the + advertised MIME filter + +--- + Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp +index 4f0e151c..fccbc89c 100644 +--- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp ++++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp +@@ -94,7 +94,7 @@ gboolean webkitWebViewRunFileChooser(WebKitWebView* webView, WebKitFileChooserRe + #endif + + if (GtkFileFilter* filter = webkit_file_chooser_request_get_mime_types_filter(request)) +- gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter); ++ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter); + gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), allowsMultipleSelection); + + if (const gchar* const* selectedFiles = webkit_file_chooser_request_get_selected_files(request)) +-- +2.21.0 + diff --git a/patches/net-libs/webkitgtk-2.24.2/0011-fr.po-Stash.patch b/patches/net-libs/webkitgtk-2.24.2/0011-fr.po-Stash.patch @@ -0,0 +1,1126 @@ +From a3940fa6b5c27bbce275e14c797d0d16327915ac Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Thu, 20 Jun 2019 23:34:26 +0200 +Subject: [PATCH 11/11] fr.po: Stash + +--- + Source/WebCore/platform/gtk/po/fr.po | 400 +++++++++++---------------- + 1 file changed, 161 insertions(+), 239 deletions(-) + +diff --git a/Source/WebCore/platform/gtk/po/fr.po b/Source/WebCore/platform/gtk/po/fr.po +index 319a79f7..abb509ad 100644 +--- a/Source/WebCore/platform/gtk/po/fr.po ++++ b/Source/WebCore/platform/gtk/po/fr.po +@@ -63,7 +63,7 @@ msgstr "Passer la vidéo en mode _plein écran" + + #: ../LocalizedStringsGtk.cpp:93 + msgid "_Delete" +-msgstr "" ++msgstr "_Suppression" + + #: ../LocalizedStringsGtk.cpp:98 + msgid "Select _All" +@@ -108,33 +108,33 @@ msgstr "RLO F_orçage droite-à-gauche" + + #: ../LocalizedStringsGtk.cpp:148 + msgid "PDF _Pop directional formatting" +-msgstr "PDF _Dépilement de formatage directionnel" ++msgstr "PDF _Arrêter le formatage directionnel" + + #: ../LocalizedStringsGtk.cpp:153 + msgid "ZWS _Zero width space" +-msgstr "ZWS E_space sans chasse" ++msgstr "ZWS E_space sans largeur" + + #: ../LocalizedStringsGtk.cpp:158 + msgid "ZWJ Zero width _joiner" +-msgstr "ZWJ _Liant sans chasse" ++msgstr "ZWJ _Liant sans largeur" + + #: ../LocalizedStringsGtk.cpp:163 + msgid "ZWNJ Zero width _non-joiner" +-msgstr "ZWNJ _Anti-liant sans chasse" ++msgstr "ZWNJ N_on-liant sans largeur" + + #: ../LocalizedStringsGtk.cpp:169 + #, c-format + msgid "Use at least one character" + msgid_plural "Use at least %d characters" +-msgstr[0] "" +-msgstr[1] "" ++msgstr[0] "Utiliser au moins un charactère" ++msgstr[1] "Utiliser au moins %d charactères" + + #: ../LocalizedStringsGtk.cpp:175 + #, c-format + msgid "Use no more than one character" + msgid_plural "Use no more than %d characters" +-msgstr[0] "" +-msgstr[1] "" ++msgstr[0] "N'utiliser plus de un charactère" ++msgstr[1] "N'utiliser plus de %d charactères" + + #: ../LocalizedStringsGtk.cpp:181 + msgid "Unacceptable TLS certificate" +@@ -151,8 +151,7 @@ msgstr "Réinitialiser" + + #: ../../LocalizedStrings.cpp:107 + msgid "This is a searchable index. Enter search keywords: " +-msgstr "" +-"Ceci est un index de recherche. Saisissez des mots-clés de recherche : " ++msgstr "Ceci est un index de recherche. Saisir des mots-clés : " + + #: ../../LocalizedStrings.cpp:113 + msgid "Submit" +@@ -249,7 +248,7 @@ msgstr "_Ajouter le mot" + #: ../../LocalizedStrings.cpp:238 + #, c-format + msgid "Look Up “%s”" +-msgstr "" ++msgstr "Rechercher “%s”" + + #: ../../LocalizedStrings.cpp:246 + msgid "_Open Link" +@@ -301,7 +300,7 @@ msgstr "_Souligné" + + #: ../../LocalizedStrings.cpp:303 + msgid "_Outline" +-msgstr "_Encadrements" ++msgstr "_Cernage" + + #: ../../LocalizedStrings.cpp:309 + msgid "Paragraph Direction" +@@ -365,7 +364,7 @@ msgstr "En boucle" + + #: ../../LocalizedStrings.cpp:386 + msgid "Enter Full Screen" +-msgstr "activer le mode plein écran" ++msgstr "Activer le mode plein écran" + + #: ../../LocalizedStrings.cpp:391 + msgctxt "Video Exit Fullscreen context menu item" +@@ -414,7 +413,7 @@ msgstr "marqueur de liste" + + #: ../../LocalizedStrings.cpp:453 + msgid "image map" +-msgstr "carte cliquable" ++msgstr "image interactive" + + #: ../../LocalizedStrings.cpp:458 + msgid "heading" +@@ -534,11 +533,11 @@ msgstr "sauter" + + #: ../../LocalizedStrings.cpp:621 + msgid "password auto fill" +-msgstr "" ++msgstr "auto-remplissage de mot de passe" + + #: ../../LocalizedStrings.cpp:626 + msgid "contact info auto fill" +-msgstr "" ++msgstr "auto-remplissage d'infos de contacts" + + #: ../../LocalizedStrings.cpp:631 + msgid "Missing Plug-in" +@@ -575,7 +574,7 @@ msgstr "Inconnue" + #: ../../LocalizedStrings.cpp:675 + #, c-format + msgid "%s %d×%d pixels" +-msgstr "%s %dx%d pixels" ++msgstr "%s %d×%d pixels" + + #: ../../LocalizedStrings.cpp:683 + msgid "Loading…" +@@ -796,22 +795,22 @@ msgstr "" + #: ../../LocalizedStrings.cpp:865 + #, c-format + msgid "Use at least %d characters" +-msgstr "" ++msgstr "Utiliser au moins %s charactères" + + #: ../../LocalizedStrings.cpp:871 + #, c-format + msgid "Use no more than %d characters" +-msgstr "" ++msgstr "N'utiliser plus de %s charactères" + + #: ../../LocalizedStrings.cpp:881 + #, c-format + msgid "Value must be greater than or equal to %s" +-msgstr "" ++msgstr "La valeur doit être suppérieure ou égale à %s" + + #: ../../LocalizedStrings.cpp:893 + #, c-format + msgid "Value must be less than or equal to %s" +-msgstr "" ++msgstr "La valeur doit être inférieure ou égale à %s" + + #: ../../LocalizedStrings.cpp:902 + msgid "Enter a valid value" +@@ -831,7 +830,7 @@ msgstr "Sous-titres" + + #: ../../LocalizedStrings.cpp:924 + msgid "Off" +-msgstr "" ++msgstr "Désactivés" + + #: ../../LocalizedStrings.cpp:929 + msgid "Auto (Recommended)" +@@ -849,7 +848,7 @@ msgstr "Inconnue" + + #: ../../LocalizedStrings.cpp:985 + msgid "Snapshotted Plug-In" +-msgstr "" ++msgstr "Capture de Greffon" + + #: ../../LocalizedStrings.cpp:990 + msgid "Click to restart" +@@ -857,16 +856,16 @@ msgstr "Cliquer pour redémarrer" + + #: ../../LocalizedStrings.cpp:995 + msgid "Show in blocked plug-in" +-msgstr "" ++msgstr "Affiché pour un greffon bloqué" + + #: ../../LocalizedStrings.cpp:1005 + #, c-format + msgid "%s WebCrypto Master Key" +-msgstr "" ++msgstr "%s Clé maitre WebCrypto" + + #: ../../LocalizedStrings.cpp:1013 + msgid "Used to encrypt WebCrypto keys in persistent storage, such as IndexedDB" +-msgstr "" ++msgstr "Utilisée pour chiffrer les clés WebCrypto de manière persistance, telle que IndexedDB" + + #: ../../network/soup/NetworkStorageSessionSoup.cpp:276 + msgid "WebKitGTK+ password" +@@ -878,7 +877,7 @@ msgstr "L'utilisation du port réseau restreint est interdite" + + #: ../../../../WebKit2/Shared/WebErrors.cpp:46 + msgid "The URL was blocked by a content blocker" +-msgstr "" ++msgstr "L'URL à été blockqué par un bloqueur de contenu" + + #: ../../../../WebKit2/Shared/WebErrors.cpp:51 + #, fuzzy +@@ -894,7 +893,7 @@ msgstr "Le chargement du cadre a été interrompu" + + #: ../../../../WebKit2/Shared/WebErrors.cpp:62 + msgid "The URL was blocked by a content filter" +-msgstr "" ++msgstr "L'URL à été bloquée par un filtreur de contenu" + + #: ../../../../WebKit2/Shared/WebErrors.cpp:68 + #, fuzzy +@@ -910,7 +909,7 @@ msgstr "Le greffon va gérer le chargement" + + #: ../../../../WebKit2/Shared/WebErrors.cpp:78 + msgid "WebKit encountered an internal error" +-msgstr "" ++msgstr "WebKit à rencontré une erreur interne" + + #: ../../../../WebKit2/Shared/glib/WebErrorsGlib.cpp:43 + msgid "Load request cancelled" +@@ -935,29 +934,29 @@ msgstr "L'utilisateur a annulé le téléchargement" + #. Title of the HTTP authentication dialog. + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:93 + msgid "Authentication Required" +-msgstr "" ++msgstr "Authentification Requise" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:104 + #, fuzzy + #| msgid "cancel" + msgid "_Cancel" +-msgstr "annuler" ++msgstr "_Annuler" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:110 + msgid "_Authenticate" +-msgstr "" ++msgstr "A_uthentification" + + #. Prompt on the HTTP authentication dialog. + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:122 + #, c-format + msgid "Authentication required by %s:%i" +-msgstr "" ++msgstr "Authentification requise par %s:%i" + + #. Label on the HTTP authentication dialog. %s is a (probably English) message from the website. + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:131 + #, c-format + msgid "The site says: “%s”" +-msgstr "" ++msgstr "Le site écrit : « %s »" + + #. Check button on the HTTP authentication dialog. + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:138 +@@ -976,21 +975,19 @@ msgstr "Mot de _passe :" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitAutomationSession.cpp:151 + msgid "Identifier" +-msgstr "" ++msgstr "Identifiant" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitAutomationSession.cpp:152 + msgid "The automation session identifier" +-msgstr "" ++msgstr "Identifiant de session automatique" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:131 + msgid "Current RGBA color" +-msgstr "" ++msgstr "Couleur RVGA actuelle" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:132 +-#, fuzzy +-#| msgid "The current active URI of the resource" + msgid "The current RGBA color for the request" +-msgstr "L'URI actif actuel de la ressource" ++msgstr "L'URI actif actuel de la requête" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:164 + msgid "Destination" +@@ -998,7 +995,7 @@ msgstr "Destination" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:165 + msgid "The local URI to where the download will be saved" +-msgstr "URI local où le téléchargement sera enregistré" ++msgstr "URI locale où le téléchargement sera enregistré" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:177 + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp:123 +@@ -1019,23 +1016,19 @@ msgstr "Détermine la progression actuelle du téléchargement" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:214 + msgid "Allow Overwrite" +-msgstr "" ++msgstr "Permettre une réécriture" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:215 +-#, fuzzy +-#| msgid "Whether the window can be resized." + msgid "Whether the destination may be overwritten" +-msgstr "Indique si la fenêtre peut être redimensionnée." ++msgstr "Indique si la destination peut être réécrite." + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitEditorState.cpp:85 +-#, fuzzy +-#| msgid "Viewport Attributes" + msgid "Typing Attributes" +-msgstr "Attributs de la zone d'affichage" ++msgstr "Attributs d'écriture" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitEditorState.cpp:86 + msgid "Flags with the typing attributes" +-msgstr "" ++msgstr "Étiquettes avec les attributs d’écritures" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:142 + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:328 +@@ -1168,16 +1161,12 @@ msgid "The media URI" + msgstr "L'URI du média" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:113 +-#, fuzzy +-#| msgid "Navigation type" + msgid "Navigation action" +-msgstr "Type de navigation" ++msgstr "Action de navigation" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:114 +-#, fuzzy +-#| msgid "The type of navigation triggering this decision" + msgid "The WebKitNavigationAction triggering this decision" +-msgstr "Le type de navigation qui déclenche cette décision" ++msgstr "La WebKitNavigationAction qui déclenche cette décision" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:130 + msgid "Navigation type" +@@ -1225,13 +1214,11 @@ msgstr "Nom du nouveau cadre ciblé par cette action de navigation" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNotification.cpp:103 + msgid "ID" +-msgstr "" ++msgstr "ID" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNotification.cpp:104 +-#, fuzzy +-#| msgid "The target frame for the navigation" + msgid "The unique id for the notification" +-msgstr "Le cadre de destination de la navigation" ++msgstr "L'identifiant unique pour la notification" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNotification.cpp:118 + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintCustomWidget.cpp:135 +@@ -1240,42 +1227,36 @@ msgid "Title" + msgstr "Titre" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNotification.cpp:119 +-#, fuzzy +-#| msgid "The target frame for the navigation" + msgid "The title for the notification" +-msgstr "Le cadre de destination de la navigation" ++msgstr "Le titre pour la notification" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNotification.cpp:133 + msgid "Body" +-msgstr "" ++msgstr "Corps de Texte" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNotification.cpp:134 +-#, fuzzy +-#| msgid "The target frame for the navigation" + msgid "The body for the notification" +-msgstr "Le cadre de destination de la navigation" ++msgstr "Le corps de texte pour la notification" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNotification.cpp:148 + msgid "Tag" +-msgstr "" ++msgstr "Étiquette" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitNotification.cpp:149 +-#, fuzzy +-#| msgid "The target frame for the navigation" + msgid "The tag identifier for the notification" +-msgstr "Le cadre de destination de la navigation" ++msgstr "L'identifiant de l'étiquette pour la navigation" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintCustomWidget.cpp:118 + msgid "Widget" +-msgstr "" ++msgstr "Élément" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintCustomWidget.cpp:119 + msgid "Widget that will be added to the print dialog." +-msgstr "" ++msgstr "Élément qui serat rajouté au dialogue d'impression." + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintCustomWidget.cpp:136 + msgid "Title of the widget that will be added to the print dialog." +-msgstr "" ++msgstr "Titre de l'élément qui serat rajouté au dialogue d'impression." + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:157 + msgid "Web View" +@@ -1283,7 +1264,7 @@ msgstr "Vue Web" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:158 + msgid "The web view that will be printed" +-msgstr "L'affichage Web qui sera imprimé" ++msgstr "La vue Web qui sera imprimée" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:170 + msgid "Print Settings" +@@ -1497,12 +1478,12 @@ msgstr "La taille par défaut de la police pour l'affichage du texte." + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:804 + msgid "Default monospace font size" +-msgstr "Taille par défaut de la police à chasse fixe" ++msgstr "Taille par défaut de la police à taille fixe" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:805 + msgid "The default font size used to display monospace text." + msgstr "" +-"La taille par défaut de la police pour l'affichage du texte à chasse fixe." ++"La taille par défaut de la police pour l'affichage du texte à taille fixe." + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:819 + msgid "Minimum font size" +@@ -1534,11 +1515,11 @@ msgstr "Indique s'il faut activer la navigation privée" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:861 + msgid "Enable developer extras" +-msgstr "Activer les extensions pour développeurs" ++msgstr "Activer les extensions de dévelopement" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:862 + msgid "Whether to enable developer extras" +-msgstr "Indique s'il faut activer les extensions pour développeurs" ++msgstr "Indique s'il faut activer les extensions de dévelopement" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:874 + msgid "Enable resizable text areas" +@@ -1636,12 +1617,12 @@ msgstr "Indique si JavaScript peut accéder au presse-papiers" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1046 + msgid "Media playback requires user gesture" +-msgstr "La lecture du média nécessite l'intervention de l'utilisateur" ++msgstr "La lecture du média nécessite une intéraction manuelle" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1047 + msgid "Whether media playback requires user gesture" + msgstr "" +-"Indique si la lecture du média nécessite l'intervention de l'utilisateur" ++"Indique si la lecture du média nécessite une intéraction manuelle" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1061 + msgid "Media playback allows inline" +@@ -1663,11 +1644,11 @@ msgstr "" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1096 + msgid "Enable Site Specific Quirks" +-msgstr "Activer les astuces spécifiques aux sites" ++msgstr "Activer des modification à certains sites" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1097 + msgid "Enables the site-specific compatibility workarounds" +-msgstr "Active les contournements de compatibilité spécifiques aux sites" ++msgstr "Active des coutournements spécifiques à certains sites" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1117 + msgid "Enable page cache" +@@ -1679,56 +1660,49 @@ msgstr "Indique si le cache des pages doit être utilisé" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1137 + msgid "User agent string" +-msgstr "Chaîne de l'agent utilisateur" ++msgstr "Identifiant de l'agent-utilisateur" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1138 + msgid "The user agent string" +-msgstr "Chaîne de l'agent utilisateur" ++msgstr "L'identifiant de l'agent-utilisateur (User-Agent)" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1150 + msgid "Enable smooth scrolling" +-msgstr "Activer le défilement lent" ++msgstr "Activer le défilement doux" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1151 + msgid "Whether to enable smooth scrolling" +-msgstr "Indique s'il faut activer le défilement lent" ++msgstr "Indique s'il faut activer le défilement doux" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1168 +-#, fuzzy +-#| msgid "Enable accelerated compositing" + msgid "Enable accelerated 2D canvas" +-msgstr "Activer la composition accélérée" ++msgstr "Activer l'accélération 2D des canvas" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1169 +-#, fuzzy + msgid "Whether to enable accelerated 2D canvas" +-msgstr "Indique s'il faut activer les zones de texte redimensionnables" ++msgstr "Indique s'il faut activer l'accélération 2D des canvas" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1184 + msgid "Write console messages on stdout" +-msgstr "" ++msgstr "Écrire les message de console à stdout" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1185 + msgid "Whether to write console messages on stdout" +-msgstr "" ++msgstr "Indique s'il faut écrire les message de console à stdout" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1203 + msgid "Enable MediaStream" + msgstr "Activer MediaStream" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1204 +-#, fuzzy +-#| msgid "Whether WebAudio content should be handled" + msgid "Whether MediaStream content should be handled" +-msgstr "Indique si les contenus WebAudio doivent être pris en charge" ++msgstr "Indique si les contenus MediaStream doivent être pris en charge" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1223 + msgid "Enable Spatial Navigation" + msgstr "Activer la navigation spatiale" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1224 +-#, fuzzy +-#| msgid "Whether to enable Spatial Navigation" + msgid "Whether to enable Spatial Navigation support." + msgstr "Indique s'il faut activer la navigation spatiale" + +@@ -1741,40 +1715,30 @@ msgid "Whether MediaSource should be enabled." + msgstr "Indique si MediaSource doit être activé" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1262 +-#, fuzzy +-#| msgid "Enable universal access from file URIs" + msgid "Allow file access from file URLs" +-msgstr "Activer l'accès universel à partir d'URI de fichiers" ++msgstr "Activer l'accès au fichiers depuis des URLs de fichiers" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1263 +-#, fuzzy +-#| msgid "Whether to allow universal access from file URIs" + msgid "Whether file access is allowed from file URLs." +-msgstr "" +-"Indique s'il faut autoriser l'accès universel à partir d'URI de fichiers" ++msgstr "Indique si les URLs de fichiers ont l'accès aux fichiers." + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1282 +-#, fuzzy +-#| msgid "Enable universal access from file URIs" + msgid "Allow universal access from the context of file scheme URLs" +-msgstr "Activer l'accès universel à partir d'URI de fichiers" ++msgstr "Activer l'accès universel à partir d'URLs de fichiers" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1283 +-#, fuzzy +-#| msgid "Whether to allow universal access from file URIs" +-msgid "" + "Whether or not universal access is allowed from the context of file scheme " + "URLs" + msgstr "" +-"Indique s'il faut autoriser l'accès universel à partir d'URI de fichiers" ++"Indique si l'accès universel est autorisé à partir d'URLs de fichiers " + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1307 + msgid "Hardware Acceleration Policy" +-msgstr "" ++msgstr "Politique d'Accélération Matérielle" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1308 + msgid "The policy to decide how to enable and disable hardware acceleration" +-msgstr "" ++msgstr "La politique pour décider comment activer et désactiver l'accélération matérielle" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIRequest.cpp:96 + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:105 +@@ -1826,58 +1790,52 @@ msgstr "Le nom de fichier suggéré pour la réponse URI" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:173 + msgid "HTTP Headers" +-msgstr "" ++msgstr "En-Têtes HTTP" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:174 +-#, fuzzy +-#| msgid "The MIME type of the response" + msgid "The The HTTP headers of the response" +-msgstr "Type MIME de la réponse" ++msgstr "Les Les En-Têtes du Type MIME de la réponse" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:168 + msgid "Is for audio device" +-msgstr "" ++msgstr "Est pour un appareil audio" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:169 + msgid "" + "Whether the media device to which the permission was requested has a " + "microphone or not." + msgstr "" ++"Si l'appareil multimédia auquel la permission à été demandé à un " ++"microphone ou non." + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:181 + msgid "Is for video device" +-msgstr "" ++msgstr "Est pour un appareil vidéo" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:182 + msgid "" + "Whether the media device to which the permission was requested has a video " + "capture capability or not." + msgstr "" ++"Si l'appareil multimédia auquel la permission à été demandé à un dispositif" ++"de capture vidéo ou non." + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:384 + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:256 +-#, fuzzy +-#| msgid "Local Storage Database Path" + msgid "Local Storage Directory" +-msgstr "Chemin vers le lieu d'enregistrement local des bases de données" ++msgstr "Dossier de Stockage Local" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:385 +-#, fuzzy +-#| msgid "The local URI to where the download will be saved" + msgid "The directory where local storage data will be saved" +-msgstr "URI local où le téléchargement sera enregistré" ++msgstr "Le dossier où le stockage local sera enregistré" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:401 +-#, fuzzy +-#| msgid "Web Database Usage" + msgid "Website Data Manager" +-msgstr "Utilisation de la base de données Web" ++msgstr "Gestionnaire de Données des sites web" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:402 +-#, fuzzy +-#| msgid "The WebView associated with this find controller" + msgid "The WebKitWebsiteDataManager associated with this context" +-msgstr "Le WebView associé à ce contrôleur de recherche" ++msgstr "Le WebKitWebsiteDataManager associé à ce context" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:127 + msgid "Inspected URI" +@@ -1893,17 +1851,19 @@ msgstr "Hauteur attachée" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:140 + msgid "The height that the inspector view should have when it is attached" +-msgstr "Hauteur que l'affichage inspecteur devrait avoir lorsqu'il est attaché" ++msgstr "Hauteur que la vue d'inspection devrait avoir lorsqu'il est attaché" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:157 + msgid "Can Attach" +-msgstr "" ++msgstr "Peux attacher" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:158 + msgid "" + "Whether the inspector can be attached to the same window that contains the " + "inspected view" + msgstr "" ++"Si l'inspecteur peux être attaché à la même fenêtre qui contient la vue " ++"inspectée" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp:111 + msgid "The current active URI of the resource" +@@ -1919,97 +1879,85 @@ msgstr "Fichiers locaux" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:221 + msgid "Base Data Directory" +-msgstr "" ++msgstr "Racine du dossier de données" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:222 + msgid "The base directory for Website data" +-msgstr "" ++msgstr "Le dossier racine pour les données des sites web" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:239 + msgid "Base Cache Directory" +-msgstr "" ++msgstr "Racine du dossier de cache" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:240 + msgid "The base directory for Website cache" +-msgstr "" ++msgstr "Le dossier racine pour le cache des sites web" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:257 +-#, fuzzy +-#| msgid "The path to where HTML5 Local Storage databases are stored." + msgid "The directory where local storage data will be stored" +-msgstr "" +-"Le chemin vers le lieu d'enregistrement local des bases de données HTML5." ++msgstr "Le dossier où le stockage local sera enregistré" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:273 + msgid "Disk Cache Directory" +-msgstr "" ++msgstr "Dossier de Cache Disque" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:274 + msgid "The directory where HTTP disk cache will be stored" +-msgstr "" ++msgstr "Le dossier où le cache disque HTTP sera enregistré" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:290 +-#, fuzzy +-#| msgid "Enable offline web application cache" + msgid "Offline Web Application Cache Directory" +-msgstr "Activer le cache hors ligne des applications Web" ++msgstr "Dossier de cache des applications hors-lignes" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:291 +-#, fuzzy +-#| msgid "Whether to enable offline web application cache" + msgid "The directory where offline web application cache will be stored" +-msgstr "Indique s'il faut activer le cache hors ligne des applications Web" ++msgstr "Le dossier où les applications hors-lignes seront enregistrées" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:307 + msgid "IndexedDB Directory" +-msgstr "" ++msgstr "Dossier IndexedDB" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:308 + msgid "The directory where IndexedDB databases will be stored" +-msgstr "" ++msgstr "Dossier où les bases de données IndexedDB seront enregistrées" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:324 + msgid "WebSQL Directory" +-msgstr "" ++msgstr "Dossier WebSQL" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:325 +-#, fuzzy +-#| msgid "The path to where HTML5 Local Storage databases are stored." + msgid "The directory where WebSQL databases will be stored" +-msgstr "" +-"Le chemin vers le lieu d'enregistrement local des bases de données HTML5." ++msgstr "Dossier où les bases de données WebSQL seront enregistrées" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:345 + msgid "Whether the WebKitWebsiteDataManager is ephemeral" +-msgstr "" ++msgstr "Si le WebKitWebsiteDataManager est éphémère" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:1270 +-#, fuzzy +-#| msgid "Play movie in fullscreen mode" + msgid "Website running in fullscreen mode" +-msgstr "Voir le film en mode plein écran" ++msgstr "Site web affiché en plein écran" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:368 + msgid "Are you sure you want to leave this page?" +-msgstr "" ++msgstr "Êtes-vous sur de vouloir quitter cette page?" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:369 + msgid "Stay on Page" +-msgstr "" ++msgstr "Rester sur la page" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:369 + msgid "Leave Page" +-msgstr "" ++msgstr "Quitter la page" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:570 + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:575 + msgid "Select Files" +-msgstr "Sélectionner les fichiers" ++msgstr "Sélectionner des fichiers" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:570 + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:575 + msgid "Select File" +-msgstr "Sélectionner le fichier" ++msgstr "Sélectionner un fichier" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:645 + msgid "Acknowledge" +@@ -2038,10 +1986,8 @@ msgid "WebView settings" + msgstr "Paramètres WebView" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:901 +-#, fuzzy +-#| msgid "The WebKitWebViewGroup of the view" + msgid "The WebKitSettings of the view" +-msgstr "WebKitWebViewGroup de l'affichage" ++msgstr "Le WebKitSettings de l'affichage" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:917 + msgid "WebView user content manager" +@@ -2087,43 +2033,35 @@ msgstr "Le niveau du zoom pour le contenu de l'affichage" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1011 + msgid "Is Loading" +-msgstr "" ++msgstr "Est en chargement" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1012 + msgid "Whether the view is loading a page" +-msgstr "Indique si l'affichage est en train de charger une page" ++msgstr "Indique si la vue est en train de charger une page" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1032 +-#, fuzzy +-#| msgid "Whether the view is loading a page" + msgid "Whether the view is playing audio" +-msgstr "Indique si l'affichage est en train de charger une page" ++msgstr "Indique si la vue joue de l'audio" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1055 +-#, fuzzy +-#| msgid "Whether the view is loading a page" + msgid "Whether the web view is ephemeral" +-msgstr "Indique si l'affichage est en train de charger une page" ++msgstr "Indique si la vue web est éphémère." + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1074 +-#, fuzzy +-#| msgid "Whether the view is loading a page" + msgid "Whether the web view is crontrolled by automation" +-msgstr "Indique si l'affichage est en train de charger une page" ++msgstr "Indique si la vue web est controllée par un automatisme" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1091 + msgid "Editable" + msgstr "Modifiable" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1092 +-#, fuzzy +-#| msgid "Whether content can be modified by the user" + msgid "Whether the content can be modified by the user." +-msgstr "Indique si le contenu peut être modifié par l'utilisateur" ++msgstr "Indique si le contenu peut être modifié par l'utilisateur." + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:3138 + msgid "An exception was raised in JavaScript" +-msgstr "Une exception a été levée dans JavaScript" ++msgstr "Une exception a été soulevée dans JavaScript" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:3596 + msgid "There was an error creating the snapshot" +@@ -2131,7 +2069,7 @@ msgstr "Une erreur est survenue lors de la création de l'instantané" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:210 + msgid "Geometry" +-msgstr "Géométrie" ++msgstr "Positionement" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:211 + msgid "The size and position of the window on the screen." +@@ -2168,7 +2106,7 @@ msgstr "Barre de menu visible" + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:263 + msgid "Whether the menubar should be visible for the window." +-msgstr "Indique si la barre du menu doit être visible sur la fenêtre." ++msgstr "Indique si la barre de menu doit être visible sur la fenêtre." + + #: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:275 + msgid "Locationbar Visible" +@@ -2211,11 +2149,9 @@ msgid "Set Color" + msgstr "Définir la couleur" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:83 +-#, fuzzy +-#| msgid "Print Backgrounds" + msgctxt "Undo action name" + msgid "Set Background Color" +-msgstr "Imprimer les arrière-plans" ++msgstr "Définir l'arrière-plans" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:85 + msgctxt "Undo action name" +@@ -2225,156 +2161,142 @@ msgstr "" + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:87 + msgctxt "Undo action name" + msgid "Tighten Kerning" +-msgstr "" ++msgstr "Rétrécir le crénage" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:89 + msgctxt "Undo action name" + msgid "Loosen Kerning" +-msgstr "" ++msgstr "Aggrandir le crénage" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:91 + msgctxt "Undo action name" + msgid "Use Standard Kerning" +-msgstr "" ++msgstr "Utiliser un crénage standard" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:93 + msgctxt "Undo action name" + msgid "Turn Off Ligatures" +-msgstr "" ++msgstr "Désactiver les ligatures" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:95 + msgctxt "Undo action name" + msgid "Use Standard Ligatures" +-msgstr "" ++msgstr "Utiliser des ligatures standards" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:97 + msgctxt "Undo action name" + msgid "Use All Ligatures" +-msgstr "" ++msgstr "Utiliser toutes les ligatures" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:99 + msgctxt "Undo action name" + msgid "Raise Baseline" +-msgstr "" ++msgstr "Relever la ligne de référence" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:101 + msgctxt "Undo action name" + msgid "Lower Baseline" +-msgstr "" ++msgstr "Abaisser la ligne de référence" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:103 + msgctxt "Undo action name" + msgid "Set Traditional Character Shape" +-msgstr "" ++msgstr "Définir une forme de charactère traditionelle" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:105 +-#, fuzzy +-#| msgid "_Font" + msgctxt "Undo action name" + msgid "Set Font" +-msgstr "_Police" ++msgstr "Définir une police" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:107 +-#, fuzzy +-#| msgid "Viewport Attributes" + msgctxt "Undo action name" + msgid "Change Attributes" +-msgstr "Attributs de la zone d'affichage" ++msgstr "Changer les attributs" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:109 + msgctxt "Undo action name" + msgid "Align Left" +-msgstr "" ++msgstr "Aligner à gauche" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:111 + msgctxt "Undo action name" + msgid "Align Right" +-msgstr "" ++msgstr "Aligner à Droite" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:113 + msgctxt "Undo action name" + msgid "Center" +-msgstr "" ++msgstr "Centré" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:115 + msgctxt "Undo action name" + msgid "Justify" +-msgstr "" ++msgstr "Justifié" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:117 + msgctxt "Undo action name" + msgid "Set Writing Direction" +-msgstr "" ++msgstr "Définir une direction d'écriture" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:119 +-#, fuzzy +-#| msgid "description" + msgctxt "Undo action name" + msgid "Subscript" +-msgstr "description" ++msgstr "Indice" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:121 +-#, fuzzy +-#| msgid "description" + msgctxt "Undo action name" + msgid "Superscript" +-msgstr "description" ++msgstr "Exposant" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:123 + msgctxt "Undo action name" + msgid "Underline" +-msgstr "" ++msgstr "Soulignage" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:125 +-#, fuzzy +-#| msgid "_Outline" + msgctxt "Undo action name" + msgid "Outline" +-msgstr "_Encadrements" ++msgstr "Cernage" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:127 +-#, fuzzy +-#| msgid "description" + msgctxt "Undo action name" + msgid "Unscript" +-msgstr "description" ++msgstr "" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:129 + msgctxt "Undo action name" + msgid "Drag" +-msgstr "" ++msgstr "Glisser" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:131 + msgctxt "Undo action name" + msgid "Cut" +-msgstr "" ++msgstr "Couper" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:133 + msgctxt "Undo action name" + msgid "Bold" +-msgstr "" ++msgstr "Gras" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:135 + msgctxt "Undo action name" + msgid "Italics" +-msgstr "" ++msgstr "Italiques" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:137 + msgctxt "Undo action name" + msgid "Delete" +-msgstr "" ++msgstr "Supprimer" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:139 +-#, fuzzy +-#| msgid "Destination" + msgctxt "Undo action name" + msgid "Dictation" +-msgstr "Destination" ++msgstr "Dicter" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:141 + msgctxt "Undo action name" + msgid "Paste" +-msgstr "" ++msgstr "Coller" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:143 + msgctxt "Undo action name" +@@ -2394,36 +2316,36 @@ msgstr "" + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:162 + msgctxt "Undo action name" + msgid "Create Link" +-msgstr "" ++msgstr "Créer un lien" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:164 + msgctxt "Undo action name" + msgid "Unlink" +-msgstr "" ++msgstr "Supprimer le lien" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:167 + msgctxt "Undo action name" + msgid "Insert List" +-msgstr "" ++msgstr "Insérer une liste" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:169 + msgctxt "Undo action name" + msgid "Formatting" +-msgstr "" ++msgstr "Formattage" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:171 + msgctxt "Undo action name" + msgid "Indent" +-msgstr "" ++msgstr "Indenter" + + #: ../../../../WebKit2/UIProcess/WebEditCommandProxy.cpp:173 + msgctxt "Undo action name" + msgid "Outdent" +-msgstr "" ++msgstr "Désindenter" + + #: ../../../../WebKit2/UIProcess/WebsiteData/WebsiteDataRecord.cpp:39 + msgid "Local documents on your computer" +-msgstr "" ++msgstr "Documents locaux à votre ordinateur" + + #: ../../../../WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebHitTestResult.cpp:103 + msgid "Node" +-- +2.21.0 + diff --git a/patches/net-libs/webkitgtk-2.24.3/webkitgtk-2.24.2-no_gerror.patch b/patches/net-libs/webkitgtk-2.24.3/webkitgtk-2.24.2-no_gerror.patch @@ -0,0 +1,24 @@ +commit 511766488cff5f4c4dc0fd0ee9ac65b28433220f +Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me> +Date: 2019-07-29T16:41:43 GMT + + ProcessLauncher::launchProcess: Do not g_error() on me + +diff --git a/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp b/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp +index 64a455d4..e790e45a 100644 +--- a/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp ++++ b/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp +@@ -121,8 +121,11 @@ void ProcessLauncher::launchProcess() + GRefPtr<GSubprocess> process; + process = adoptGRef(g_subprocess_launcher_spawnv(launcher.get(), argv, &error.outPtr())); + +- if (!process.get()) +- g_error("Unable to fork a new child process: %s", error->message); ++ if (!process.get()) { ++ g_fprintf(stderr, "WebKit: Unable to fork a new child process: %s", error->message); ++ //TODO: try to clean before returning ++ return; ++ } + + const char* processIdStr = g_subprocess_get_identifier(process.get()); + m_processIdentifier = g_ascii_strtoll(processIdStr, nullptr, 0); diff --git a/patches/sys-libs/libomp/FreeBSD_bug32279.patch b/patches/sys-libs/libomp-7.1.0/FreeBSD_bug32279.patch diff --git a/patches/sys-libs/libomp-8.0.1/FreeBSD_bug32279.patch b/patches/sys-libs/libomp-8.0.1/FreeBSD_bug32279.patch @@ -0,0 +1,14 @@ +--- runtime/cmake/LibompHandleFlags.cmake.old ++++ runtime/cmake/LibompHandleFlags.cmake +@@ -152,6 +152,11 @@ function(libomp_get_libflags libflags) + libomp_append(libflags_local "-lm") + libomp_append(libflags_local "-Wl,--as-needed" LIBOMP_HAVE_AS_NEEDED_FLAG) + ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "DragonFly") ++ IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") ++ libomp_append(libflags_local "-Wl,--no-as-needed" LIBOMP_HAVE_AS_NEEDED_FLAG) ++ libomp_append(libflags_local -lm) ++ libomp_append(libflags_local "-Wl,--as-needed" LIBOMP_HAVE_AS_NEEDED_FLAG) ++ ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + IF(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") + libomp_append(libflags_local -lm) + ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") diff --git a/patches/x11-misc/redshift/redshift-9999_663_wayland.patch b/patches/x11-misc/redshift/redshift-9999_663_wayland.patch @@ -0,0 +1,1015 @@ +From 7da875d34854a6a34612d5ce4bd8718c32bec804 Mon Sep 17 00:00:00 2001 +From: minus <minus@mnus.de> +Date: Thu, 18 Apr 2019 00:43:21 +0200 +Subject: [PATCH] Implement Wayland support +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Implement the wlr_gamma_control_unstable_v1 protocol. +The Wayland backend is prioritized over randr since it will fail in +an X11 context anyway (but the randr backend would not fail in a Wayland +context with xwayland support). +The gamma setting is reset when the client disconnects, thus the +behavior for oneshot mode blocks, like for Quartz. + +Co-Authored-By: Giulio Camuffo <giuliocamuffo@gmail.com> +Co-Authored-By: Thomas Weißschuh <thomas@t-8ch.de> +Co-Authored-By: Marek Otahal <markotahal@gmail.com> +Co-Authored-By: Dominique Martinet <asmadeus@codewreck.org> +--- + configure.ac | 29 +++ + po/POTFILES.in | 1 + + src/Makefile.am | 32 ++++ + src/gamma-control.xml | 126 +++++++++++++ + src/gamma-wl.c | 372 +++++++++++++++++++++++++++++++++++++ + src/gamma-wl.h | 32 ++++ + src/orbital-authorizer.xml | 61 ++++++ + src/os-compatibility.c | 148 +++++++++++++++ + src/os-compatibility.h | 9 + + src/redshift.c | 32 ++-- + 13 files changed, 840 insertions(+), 14 deletions(-) + create mode 100644 src/gamma-control.xml + create mode 100644 src/gamma-wl.c + create mode 100644 src/gamma-wl.h + create mode 100644 src/orbital-authorizer.xml + create mode 100644 src/os-compatibility.c + create mode 100644 src/os-compatibility.h + +diff --git a/configure.ac b/configure.ac +index b4116262..8347dcc4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -68,6 +68,10 @@ PKG_CHECK_MODULES([XCB], [xcb], [have_xcb=yes], [have_xcb=no]) + PKG_CHECK_MODULES([XCB_RANDR], [xcb-randr], + [have_xcb_randr=yes], [have_xcb_randr=no]) + ++PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-scanner >= 1.15.0], ++ [have_wayland=yes], [have_wayland=no]) ++PKG_CHECK_VAR(WAYLAND_SCANNER, wayland-scanner, wayland_scanner) ++ + PKG_CHECK_MODULES([GLIB], [glib-2.0 gobject-2.0], [have_glib=yes], [have_glib=no]) + PKG_CHECK_MODULES([GEOCLUE2], [glib-2.0 gio-2.0 >= 2.26], [have_geoclue2=yes], [have_geoclue2=no]) + +@@ -124,6 +128,30 @@ AS_IF([test "x$enable_drm" != xno], [ + ]) + AM_CONDITIONAL([ENABLE_DRM], [test "x$enable_drm" = xyes]) + ++# Check Wayland method ++AC_MSG_CHECKING([whether to enable Wayland method]) ++AC_ARG_ENABLE([wayland], [AC_HELP_STRING([--enable-wayland], ++ [enable Wayland method])], ++ [enable_wayland=$enableval],[enable_wayland=maybe]) ++AS_IF([test "x$enable_wayland" != xno], [ ++ AS_IF([test $have_wayland = yes], [ ++ AC_DEFINE([ENABLE_WAYLAND], 1, ++ [Define to 1 to enable Wayland method]) ++ AC_MSG_RESULT([yes]) ++ enable_wayland=yes ++ ], [ ++ AC_MSG_RESULT([missing dependencies]) ++ AS_IF([test "x$enable_wayland" = xyes], [ ++ AC_MSG_ERROR([missing dependencies for Wayland method]) ++ ]) ++ enable_wayland=no ++ ]) ++], [ ++ AC_MSG_RESULT([no]) ++ enable_wayland=no ++]) ++AM_CONDITIONAL([ENABLE_WAYLAND], [test "x$enable_wayland" = xyes]) ++ + # Check RANDR method + AC_MSG_CHECKING([whether to enable RANDR method]) + AC_ARG_ENABLE([randr], [AC_HELP_STRING([--enable-randr], +@@ -376,6 +404,7 @@ echo " + + Adjustment methods: + DRM: ${enable_drm} ++ Wayland: ${enable_wayland} + RANDR: ${enable_randr} + VidMode: ${enable_vidmode} + Quartz (macOS): ${enable_quartz} +diff --git a/po/POTFILES.in b/po/POTFILES.in +index 5ef8dacc..1d255600 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -9,6 +9,7 @@ src/options.c + src/config-ini.c + + src/gamma-drm.c ++src/gamma-wl.c + src/gamma-randr.c + src/gamma-vidmode.c + src/gamma-quartz.c +diff --git a/src/Makefile.am b/src/Makefile.am +index 8aa96ead..ed40f2d8 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -23,6 +23,7 @@ redshift_SOURCES = \ + + EXTRA_redshift_SOURCES = \ + gamma-drm.c gamma-drm.h \ ++ gamma-wl.c gamma-wl.h \ + gamma-randr.c gamma-randr.h \ + gamma-vidmode.c gamma-vidmode.h \ + gamma-quartz.c gamma-quartz.h \ +@@ -43,6 +44,29 @@ redshift_LDADD += \ + $(DRM_LIBS) $(DRM_CFLAGS) + endif + ++if ENABLE_WAYLAND ++redshift_SOURCES += gamma-wl.c gamma-wl.h os-compatibility.c os-compatibility.h ++ ++AM_CFLAGS += $(WAYLAND_CFLAGS) ++ ++redshift_LDADD += \ ++ $(WAYLAND_LIBS) $(WAYLAND_CFLAGS) ++ ++nodist_redshift_SOURCES = \ ++ gamma-control-protocol.c \ ++ gamma-control-client-protocol.h \ ++ orbital-authorizer-protocol.c \ ++ orbital-authorizer-client-protocol.h ++ ++BUILT_SOURCES = \ ++ gamma-control-protocol.c \ ++ gamma-control-client-protocol.h \ ++ orbital-authorizer-protocol.c \ ++ orbital-authorizer-client-protocol.h ++ ++EXTRA_DIST += gamma-control.xml orbital-authorizer.xml ++endif ++ + if ENABLE_RANDR + redshift_SOURCES += gamma-randr.c gamma-randr.h + AM_CFLAGS += $(XCB_CFLAGS) $(XCB_RANDR_CFLAGS) +@@ -103,3 +127,11 @@ endif + + .rc.o: + $(AM_V_GEN)$(WINDRES) -I$(top_builddir) -i $< -o $@ ++ ++CLEANFILES = *-protocol.c *-client-protocol.h ++ ++%-protocol.c : $(srcdir)/%.xml ++ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && $(WAYLAND_SCANNER) private-code < $< > $@ ++ ++%-client-protocol.h : $(srcdir)/%.xml ++ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && $(WAYLAND_SCANNER) client-header < $< > $@ +diff --git a/src/gamma-control.xml b/src/gamma-control.xml +new file mode 100644 +index 00000000..ad71a15c +--- /dev/null ++++ b/src/gamma-control.xml +@@ -0,0 +1,126 @@ ++<?xml version="1.0" encoding="UTF-8"?> ++<protocol name="wlr_gamma_control_unstable_v1"> ++ <copyright> ++ Copyright © 2015 Giulio camuffo ++ Copyright © 2018 Simon Ser ++ ++ Permission to use, copy, modify, distribute, and sell this ++ software and its documentation for any purpose is hereby granted ++ without fee, provided that the above copyright notice appear in ++ all copies and that both that copyright notice and this permission ++ notice appear in supporting documentation, and that the name of ++ the copyright holders not be used in advertising or publicity ++ pertaining to distribution of the software without specific, ++ written prior permission. The copyright holders make no ++ representations about the suitability of this software for any ++ purpose. It is provided "as is" without express or implied ++ warranty. ++ ++ THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS ++ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND ++ FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY ++ SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ++ AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ++ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF ++ THIS SOFTWARE. ++ </copyright> ++ ++ <description summary="manage gamma tables of outputs"> ++ This protocol allows a privileged client to set the gamma tables for ++ outputs. ++ ++ Warning! The protocol described in this file is experimental and ++ backward incompatible changes may be made. Backward compatible changes ++ may be added together with the corresponding interface version bump. ++ Backward incompatible changes are done by bumping the version number in ++ the protocol and interface names and resetting the interface version. ++ Once the protocol is to be declared stable, the 'z' prefix and the ++ version number in the protocol and interface names are removed and the ++ interface version number is reset. ++ </description> ++ ++ <interface name="zwlr_gamma_control_manager_v1" version="1"> ++ <description summary="manager to create per-output gamma controls"> ++ This interface is a manager that allows creating per-output gamma ++ controls. ++ </description> ++ ++ <request name="get_gamma_control"> ++ <description summary="get a gamma control for an output"> ++ Create a gamma control that can be used to adjust gamma tables for the ++ provided output. ++ </description> ++ <arg name="id" type="new_id" interface="zwlr_gamma_control_v1"/> ++ <arg name="output" type="object" interface="wl_output"/> ++ </request> ++ ++ <request name="destroy" type="destructor"> ++ <description summary="destroy the manager"> ++ All objects created by the manager will still remain valid, until their ++ appropriate destroy request has been called. ++ </description> ++ </request> ++ </interface> ++ ++ <interface name="zwlr_gamma_control_v1" version="1"> ++ <description summary="adjust gamma tables for an output"> ++ This interface allows a client to adjust gamma tables for a particular ++ output. ++ ++ The client will receive the gamma size, and will then be able to set gamma ++ tables. At any time the compositor can send a failed event indicating that ++ this object is no longer valid. ++ ++ There must always be at most one gamma control object per output, which ++ has exclusive access to this particular output. When the gamma control ++ object is destroyed, the gamma table is restored to its original value. ++ </description> ++ ++ <event name="gamma_size"> ++ <description summary="size of gamma ramps"> ++ Advertise the size of each gamma ramp. ++ ++ This event is sent immediately when the gamma control object is created. ++ </description> ++ <arg name="size" type="uint"/> ++ </event> ++ ++ <enum name="error"> ++ <entry name="invalid_gamma" value="1" summary="invalid gamma tables"/> ++ </enum> ++ ++ <request name="set_gamma"> ++ <description summary="set the gamma table"> ++ Set the gamma table. The file descriptor can be memory-mapped to provide ++ the raw gamma table, which contains successive gamma ramps for the red, ++ green and blue channels. Each gamma ramp is an array of 16-byte unsigned ++ integers which has the same length as the gamma size. ++ ++ The file descriptor data must have the same length as three times the ++ gamma size. ++ </description> ++ <arg name="fd" type="fd" summary="gamma table file descriptor"/> ++ </request> ++ ++ <event name="failed"> ++ <description summary="object no longer valid"> ++ This event indicates that the gamma control is no longer valid. This ++ can happen for a number of reasons, including: ++ - The output doesn't support gamma tables ++ - Setting the gamma tables failed ++ - Another client already has exclusive gamma control for this output ++ - The compositor has transfered gamma control to another client ++ ++ Upon receiving this event, the client should destroy this object. ++ </description> ++ </event> ++ ++ <request name="destroy" type="destructor"> ++ <description summary="destroy this control"> ++ Destroys the gamma control object. If the object is still valid, this ++ restores the original gamma tables. ++ </description> ++ </request> ++ </interface> ++</protocol> +diff --git a/src/gamma-wl.c b/src/gamma-wl.c +new file mode 100644 +index 00000000..477c680a +--- /dev/null ++++ b/src/gamma-wl.c +@@ -0,0 +1,372 @@ ++/* gamma-wl.c -- Wayland gamma adjustment header ++ This file is part of Redshift. ++ ++ Redshift 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. ++ ++ Redshift 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 Redshift. If not, see <http://www.gnu.org/licenses/>. ++ ++ Copyright (c) 2015 Giulio Camuffo <giuliocamuffo@gmail.com> ++*/ ++ ++#include <stdio.h> ++#include <stdlib.h> ++#include <stdint.h> ++#include <string.h> ++#include <alloca.h> ++#include <sys/mman.h> ++#include <sys/types.h> ++#include <sys/stat.h> ++#include <fcntl.h> ++#include <unistd.h> ++ ++#ifdef ENABLE_NLS ++# include <libintl.h> ++# define _(s) gettext(s) ++#else ++# define _(s) s ++#endif ++ ++#include "gamma-wl.h" ++#include "os-compatibility.h" ++#include "colorramp.h" ++ ++#include "gamma-control-client-protocol.h" ++#include "orbital-authorizer-client-protocol.h" ++ ++typedef struct { ++ struct wl_display *display; ++ struct wl_registry *registry; ++ struct wl_callback *callback; ++ uint32_t gamma_control_manager_id; ++ struct zwlr_gamma_control_manager_v1 *gamma_control_manager; ++ int num_outputs; ++ struct output *outputs; ++ int authorized; ++} wayland_state_t; ++ ++struct output { ++ uint32_t global_id; ++ struct wl_output *output; ++ struct zwlr_gamma_control_v1 *gamma_control; ++ uint32_t gamma_size; ++}; ++ ++static int ++wayland_init(wayland_state_t **state) ++{ ++ /* Initialize state. */ ++ *state = malloc(sizeof(**state)); ++ if (*state == NULL) return -1; ++ ++ memset(*state, 0, sizeof **state); ++ return 0; ++} ++ ++static void ++authorizer_feedback_granted(void *data, struct orbital_authorizer_feedback *feedback) ++{ ++ wayland_state_t *state = data; ++ state->authorized = 1; ++} ++ ++static void ++authorizer_feedback_denied(void *data, struct orbital_authorizer_feedback *feedback) ++{ ++ fprintf(stderr, _("Fatal: redshift was not authorized to bind the 'zwlr_gamma_control_manager_v1' interface.\n")); ++ exit(EXIT_FAILURE); ++} ++ ++static const struct orbital_authorizer_feedback_listener authorizer_feedback_listener = { ++ authorizer_feedback_granted, ++ authorizer_feedback_denied ++}; ++ ++static void ++registry_global(void *data, struct wl_registry *registry, uint32_t id, const char *interface, uint32_t version) ++{ ++ wayland_state_t *state = data; ++ ++ if (strcmp(interface, "zwlr_gamma_control_manager_v1") == 0) { ++ state->gamma_control_manager_id = id; ++ state->gamma_control_manager = wl_registry_bind(registry, id, &zwlr_gamma_control_manager_v1_interface, 1); ++ } else if (strcmp(interface, "wl_output") == 0) { ++ state->num_outputs++; ++ if (!(state->outputs = realloc(state->outputs, state->num_outputs * sizeof(struct output)))) { ++ fprintf(stderr, _("Failed to allcate memory\n")); ++ return; ++ } ++ ++ struct output *output = &state->outputs[state->num_outputs - 1]; ++ output->global_id = id; ++ output->output = wl_registry_bind(registry, id, &wl_output_interface, 1); ++ output->gamma_control = NULL; ++ } else if (strcmp(interface, "orbital_authorizer") == 0) { ++ struct wl_event_queue *queue = wl_display_create_queue(state->display); ++ ++ struct orbital_authorizer *auth = wl_registry_bind(registry, id, &orbital_authorizer_interface, 1u); ++ wl_proxy_set_queue((struct wl_proxy *)auth, queue); ++ ++ struct orbital_authorizer_feedback *feedback = orbital_authorizer_authorize(auth, "zwlr_gamma_control_manager_v1"); ++ orbital_authorizer_feedback_add_listener(feedback, &authorizer_feedback_listener, state); ++ ++ int ret = 0; ++ while (!state->authorized && ret >= 0) { ++ ret = wl_display_dispatch_queue(state->display, queue); ++ } ++ ++ orbital_authorizer_feedback_destroy(feedback); ++ orbital_authorizer_destroy(auth); ++ wl_event_queue_destroy(queue); ++ } ++} ++ ++static void ++registry_global_remove(void *data, struct wl_registry *registry, uint32_t id) ++{ ++ wayland_state_t *state = data; ++ ++ if (state->gamma_control_manager_id == id) { ++ fprintf(stderr, _("The zwlr_gamma_control_manager_v1 was removed\n")); ++ exit(EXIT_FAILURE); ++ } ++ ++ for (int i = 0; i < state->num_outputs; ++i) { ++ struct output *output = &state->outputs[i]; ++ if (output->global_id == id) { ++ if (output->gamma_control) { ++ zwlr_gamma_control_v1_destroy(output->gamma_control); ++ output->gamma_control = NULL; ++ } ++ wl_output_destroy(output->output); ++ ++ /* If the removed output is not the last one in the array move the last one ++ * in the now empty slot. Then shrink the array */ ++ if (i < --state->num_outputs) { ++ memcpy(output, &state->outputs[state->num_outputs], sizeof(struct output)); ++ } ++ state->outputs = realloc(state->outputs, state->num_outputs * sizeof(struct output)); ++ ++ return; ++ } ++ } ++} ++ ++static const struct wl_registry_listener registry_listener = { ++ registry_global, ++ registry_global_remove ++}; ++ ++static void ++gamma_control_gamma_size(void *data, struct zwlr_gamma_control_v1 *control, uint32_t size) ++{ ++ struct output *output = data; ++ output->gamma_size = size; ++} ++ ++static void ++gamma_control_failed(void *data, struct zwlr_gamma_control_v1 *control) ++{ ++} ++ ++ ++static const struct zwlr_gamma_control_v1_listener gamma_control_listener = { ++ gamma_control_gamma_size, ++ gamma_control_failed ++}; ++ ++static int ++wayland_start(wayland_state_t *state) ++{ ++ state->display = wl_display_connect(NULL); ++ if (!state->display) { ++ fputs(_("Could not connect to wayland display, exiting.\n"), stderr); ++ return -1; ++ } ++ state->registry = wl_display_get_registry(state->display); ++ ++ wl_registry_add_listener(state->registry, &registry_listener, state); ++ ++ wl_display_roundtrip(state->display); ++ if (!state->gamma_control_manager) { ++ return -1; ++ } ++ if (state->num_outputs > 0 && !state->outputs) { ++ return -1; ++ } ++ ++ return 0; ++} ++ ++static void ++wayland_restore(wayland_state_t *state) ++{ ++ for (int i = 0; i < state->num_outputs; ++i) { ++ struct output *output = &state->outputs[i]; ++ if (output->gamma_control) { ++ zwlr_gamma_control_v1_destroy(output->gamma_control); ++ output->gamma_control = NULL; ++ } ++ } ++ wl_display_flush(state->display); ++} ++ ++static void ++wayland_free(wayland_state_t *state) ++{ ++ int ret = 0; ++ /* Wait for the sync callback to destroy everything, otherwise ++ * we could destroy the gamma control before gamma has been set */ ++ while (state->callback && ret >= 0) { ++ ret = wl_display_dispatch(state->display); ++ } ++ if (state->callback) { ++ fprintf(stderr, _("Ignoring error on wayland connection while waiting to disconnect: %d\n"), ret); ++ wl_callback_destroy(state->callback); ++ } ++ ++ for (int i = 0; i < state->num_outputs; ++i) { ++ struct output *output = &state->outputs[i]; ++ if (output->gamma_control) { ++ zwlr_gamma_control_v1_destroy(output->gamma_control); ++ output->gamma_control = NULL; ++ } ++ wl_output_destroy(output->output); ++ } ++ ++ if (state->gamma_control_manager) { ++ zwlr_gamma_control_manager_v1_destroy(state->gamma_control_manager); ++ } ++ if (state->registry) { ++ wl_registry_destroy(state->registry); ++ } ++ if (state->display) { ++ wl_display_disconnect(state->display); ++ } ++ ++ free(state); ++} ++ ++static void ++wayland_print_help(FILE *f) ++{ ++ fputs(_("Adjust gamma ramps with a Wayland compositor.\n"), f); ++ fputs("\n", f); ++} ++ ++static int ++wayland_set_option(wayland_state_t *state, const char *key, const char *value) ++{ ++ return 0; ++} ++ ++static void ++callback_done(void *data, struct wl_callback *cb, uint32_t t) ++{ ++ wayland_state_t *state = data; ++ state->callback = NULL; ++ wl_callback_destroy(cb); ++} ++ ++static const struct wl_callback_listener callback_listener = { ++ callback_done ++}; ++ ++static int ++wayland_set_temperature(wayland_state_t *state, const color_setting_t *setting) ++{ ++ int ret = 0, roundtrip = 0; ++ ++ /* We wait for the sync callback to throttle a bit and not send more ++ * requests than the compositor can manage, otherwise we'd get disconnected. ++ * This also allows us to dispatch other incoming events such as ++ * wl_registry.global_remove. */ ++ while (state->callback && ret >= 0) { ++ ret = wl_display_dispatch(state->display); ++ } ++ if (ret < 0) { ++ fprintf(stderr, _("The Wayland connection experienced a fatal error: %d\n"), ret); ++ return ret; ++ } ++ ++ for (int i = 0; i < state->num_outputs; ++i) { ++ struct output *output = &state->outputs[i]; ++ if (!output->gamma_control) { ++ output->gamma_control = zwlr_gamma_control_manager_v1_get_gamma_control(state->gamma_control_manager, output->output); ++ zwlr_gamma_control_v1_add_listener(output->gamma_control, &gamma_control_listener, output); ++ roundtrip = 1; ++ } ++ } ++ if (roundtrip) { ++ wl_display_roundtrip(state->display); ++ } ++ ++ for (int i = 0; i < state->num_outputs; ++i) { ++ struct output *output = &state->outputs[i]; ++ int size = output->gamma_size; ++ size_t ramp_bytes = size * sizeof(uint16_t); ++ size_t total_bytes = ramp_bytes * 3; ++ ++ int fd = os_create_anonymous_file(total_bytes); ++ if (fd < 0) { ++ perror("os_create_anonymous_file"); ++ return -1; ++ } ++ ++ void *ptr = mmap(NULL, total_bytes, ++ PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); ++ if (ptr == MAP_FAILED) { ++ perror("mmap"); ++ close(fd); ++ return -1; ++ } ++ ++ uint16_t *r_gamma = ptr; ++ uint16_t *g_gamma = ptr + ramp_bytes; ++ uint16_t *b_gamma = ptr + 2 * ramp_bytes; ++ ++ /* Initialize gamma ramps to pure state */ ++ for (int i = 0; i < size; i++) { ++ uint16_t value = (double)i / size * (UINT16_MAX+1); ++ r_gamma[i] = value; ++ g_gamma[i] = value; ++ b_gamma[i] = value; ++ } ++ ++ colorramp_fill(r_gamma, g_gamma, b_gamma, size, setting); ++ if (munmap(ptr, total_bytes) == -1) { ++ perror("munmap"); ++ close(fd); ++ return -1; ++ } ++ ++ zwlr_gamma_control_v1_set_gamma(output->gamma_control, fd); ++ close(fd); ++ } ++ ++ state->callback = wl_display_sync(state->display); ++ wl_callback_add_listener(state->callback, &callback_listener, state); ++ wl_display_flush(state->display); ++ ++ return 0; ++} ++ ++const gamma_method_t wl_gamma_method = { ++ "wayland", ++ 1, ++ (gamma_method_init_func *) wayland_init, ++ (gamma_method_start_func *) wayland_start, ++ (gamma_method_free_func *) wayland_free, ++ (gamma_method_print_help_func *) wayland_print_help, ++ (gamma_method_set_option_func *) wayland_set_option, ++ (gamma_method_restore_func *) wayland_restore, ++ (gamma_method_set_temperature_func *) wayland_set_temperature, ++}; +diff --git a/src/gamma-wl.h b/src/gamma-wl.h +new file mode 100644 +index 00000000..333e99b2 +--- /dev/null ++++ b/src/gamma-wl.h +@@ -0,0 +1,32 @@ ++/* gamma-wl.h -- Wayland gamma adjustment header ++ This file is part of Redshift. ++ ++ Redshift 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. ++ ++ Redshift 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 Redshift. If not, see <http://www.gnu.org/licenses/>. ++ ++ Copyright (c) 2015 Giulio Camuffo <giuliocamuffo@gmail.com> ++*/ ++ ++#ifndef REDSHIFT_GAMMA_WAYLAND_H ++#define REDSHIFT_GAMMA_WAYLAND_H ++ ++#include <stdint.h> ++ ++#include <wayland-client.h> ++ ++#include "redshift.h" ++ ++extern const gamma_method_t wl_gamma_method; ++ ++ ++#endif /* ! REDSHIFT_GAMMA_DRM_H */ +diff --git a/src/orbital-authorizer.xml b/src/orbital-authorizer.xml +new file mode 100644 +index 00000000..bccaa081 +--- /dev/null ++++ b/src/orbital-authorizer.xml +@@ -0,0 +1,61 @@ ++<protocol name="orbital_authorizer"> ++ ++ <interface name="orbital_authorizer" version="1"> ++ <description summary="authorize clients to use certain interfaces"> ++ The orbital_authorizer global interface allows clients to ++ ask the compositor the authorization to bind certain restricted ++ global interfaces. ++ Any client that aims to bind restricted interfaces should first ++ request the authorization by using this interface. Failing to do ++ so will result in the compositor sending a protocol error to the ++ client when it binds the restricted interface. ++ ++ The list of restricted interfaces is compositor dependant, but must ++ not include the core interfaces defined in wayland.xml. ++ </description> ++ ++ <request name="destroy" type="destructor"> ++ <description summary="destroy this orbital_authorizer object"/> ++ </request> ++ ++ <request name="authorize"> ++ <description summary="authorize a global interface"> ++ The authorize request allows the client to ask the compositor the ++ authorization to bind a restricted global interface. The newly ++ created orbital_authorizer_feedback will be invalid after the ++ compositor send either the granted or denied event so the client ++ must destroy it immediately after. ++ </description> ++ <arg name="id" type="new_id" interface="orbital_authorizer_feedback" summary="the new feedback object"/> ++ <arg name="global" type="string" summary="the global interface the client wants to bind"/> ++ </request> ++ </interface> ++ ++ <interface name="orbital_authorizer_feedback" version="1"> ++ <description summary="feedback for an authorization request"> ++ The orbital_authorizer_feedback interface is used by requesting ++ an authorization with the orbital_authorizer.authorize request. ++ The compositor will send either the granted or denied event based ++ on the system and user configuration. How the authorization process ++ works is compositor specific, but a compositor is allowed to ask ++ for user input, so the response for an authorization request may ++ come after some time. ++ </description> ++ ++ <event name="granted"> ++ <description summary="the authorization was granted"> ++ The authorization was granted. The client can now bind the restricted ++ interface. ++ </description> ++ </event> ++ ++ <event name="denied"> ++ <description summary="the authorization was denied"> ++ The authorization was denied. The client is not allowed to bind the ++ restricted interface and trying to do so will trigger a protocol ++ error killing the client. ++ </description> ++ </event> ++ </interface> ++ ++</protocol> +diff --git a/src/os-compatibility.c b/src/os-compatibility.c +new file mode 100644 +index 00000000..32a9109e +--- /dev/null ++++ b/src/os-compatibility.c +@@ -0,0 +1,148 @@ ++/* ++ * Copyright © 2012 Collabora, Ltd. ++ * ++ * 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 (including the ++ * next paragraph) 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. ++ */ ++ ++#define _POSIX_C_SOURCE 200809L ++#include <errno.h> ++#include <fcntl.h> ++#include <stdlib.h> ++#include <string.h> ++#include <sys/socket.h> ++#include <sys/stat.h> ++#include <sys/types.h> ++#include <unistd.h> ++#include "os-compatibility.h" ++ ++int os_fd_set_cloexec(int fd) { ++ if (fd == -1) { ++ return -1; ++ } ++ ++ long flags = fcntl(fd, F_GETFD); ++ if (flags == -1) { ++ return -1; ++ } ++ ++ if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) == -1) { ++ return -1; ++ } ++ ++ return 0; ++} ++ ++int set_cloexec_or_close(int fd) { ++ if (os_fd_set_cloexec(fd) != 0) { ++ close(fd); ++ return -1; ++ } ++ return fd; ++} ++ ++int create_tmpfile_cloexec(char *tmpname) { ++ int fd; ++ mode_t prev_umask = umask(0066); ++#ifdef HAVE_MKOSTEMP ++ fd = mkostemp(tmpname, O_CLOEXEC); ++ if (fd >= 0) { ++ unlink(tmpname); ++ } ++#else ++ fd = mkstemp(tmpname); ++ if (fd >= 0) { ++ fd = set_cloexec_or_close(fd); ++ unlink(tmpname); ++ } ++#endif ++ umask(prev_umask); ++ ++ return fd; ++} ++ ++/* ++ * Create a new, unique, anonymous file of the given size, and ++ * return the file descriptor for it. The file descriptor is set ++ * CLOEXEC. The file is immediately suitable for mmap()'ing ++ * the given size at offset zero. ++ * ++ * The file should not have a permanent backing store like a disk, ++ * but may have if XDG_RUNTIME_DIR is not properly implemented in OS. ++ * ++ * The file name is deleted from the file system. ++ * ++ * The file is suitable for buffer sharing between processes by ++ * transmitting the file descriptor over Unix sockets using the ++ * SCM_RIGHTS methods. ++ * ++ * If the C library implements posix_fallocate(), it is used to ++ * guarantee that disk space is available for the file at the ++ * given size. If disk space is insufficient, errno is set to ENOSPC. ++ * If posix_fallocate() is not supported, program may receive ++ * SIGBUS on accessing mmap()'ed file contents instead. ++ */ ++int os_create_anonymous_file(off_t size) { ++ static const char template[] = "/redshift-shared-XXXXXX"; ++ ++ const char *path = getenv("XDG_RUNTIME_DIR"); ++ if (!path) { ++ errno = ENOENT; ++ return -1; ++ } ++ ++ char *name = malloc(strlen(path) + sizeof(template)); ++ if (!name) { ++ return -1; ++ } ++ ++ strcpy(name, path); ++ strcat(name, template); ++ ++ int fd = create_tmpfile_cloexec(name); ++ free(name); ++ if (fd < 0) { ++ return -1; ++ } ++ ++#ifdef WLR_HAS_POSIX_FALLOCATE ++ int ret; ++ do { ++ ret = posix_fallocate(fd, 0, size); ++ } while (ret == EINTR); ++ if (ret != 0) { ++ close(fd); ++ errno = ret; ++ return -1; ++ } ++#else ++ int ret; ++ do { ++ ret = ftruncate(fd, size); ++ } while (ret < 0 && errno == EINTR); ++ if (ret < 0) { ++ close(fd); ++ return -1; ++ } ++#endif ++ ++ return fd; ++} +diff --git a/src/os-compatibility.h b/src/os-compatibility.h +new file mode 100644 +index 00000000..2038025e +--- /dev/null ++++ b/src/os-compatibility.h +@@ -0,0 +1,9 @@ ++#ifndef UTIL_OS_COMPATIBILITY_H ++#define UTIL_OS_COMPATIBILITY_H ++ ++int os_fd_set_cloexec(int fd); ++int set_cloexec_or_close(int fd); ++int create_tmpfile_cloexec(char *tmpname); ++int os_create_anonymous_file(off_t size); ++ ++#endif +diff --git a/src/redshift.c b/src/redshift.c +index e0221d5e..488503ea 100644 +--- a/src/redshift.c ++++ b/src/redshift.c +@@ -94,6 +94,10 @@ int poll(struct pollfd *fds, int nfds, int timeout) { abort(); return -1; } + # include "gamma-w32gdi.h" + #endif + ++#ifdef ENABLE_WAYLAND ++# include "gamma-wl.h" ++#endif ++ + + #include "location-manual.h" + +@@ -902,6 +906,9 @@ main(int argc, char *argv[]) + + /* List of gamma methods. */ + const gamma_method_t gamma_methods[] = { ++#ifdef ENABLE_WAYLAND ++ wl_gamma_method, ++#endif + #ifdef ENABLE_DRM + drm_gamma_method, + #endif +@@ -1237,11 +1244,12 @@ main(int argc, char *argv[]) + exit(EXIT_FAILURE); + } + +- /* In Quartz (macOS) the gamma adjustments will +- automatically revert when the process exits. ++ /* In Quartz (macOS) and wayland, the gamma adjustments ++ will automatically revert when the process exits. + Therefore, we have to loop until CTRL-C is received. + */ +- if (strcmp(options.method->name, "quartz") == 0) { ++ if (strcmp(options.method->name, "quartz") == 0 || ++ strcmp(options.method->name, "wayland") == 0) { + fputs(_("Press ctrl-c to stop...\n"), stderr); + pause(); + } +@@ -1266,10 +1274,11 @@ main(int argc, char *argv[]) + exit(EXIT_FAILURE); + } + +- /* In Quartz (OSX) the gamma adjustments will automatically +- revert when the process exits. Therefore, we have to loop +- until CTRL-C is received. */ +- if (strcmp(options.method->name, "quartz") == 0) { ++ /* In Quartz (OSX) and wayland, the gamma adjustments will ++ automatically revert when the process exits. ++ Therefore, we have to loop until CTRL-C is received. */ ++ if (strcmp(options.method->name, "quartz") == 0 || ++ strcmp(options.method->name, "wayland") == 0) { + fputs(_("Press ctrl-c to stop...\n"), stderr); + pause(); + } +@@ -1288,10 +1297,11 @@ main(int argc, char *argv[]) + exit(EXIT_FAILURE); + } + +- /* In Quartz (OSX) the gamma adjustments will automatically +- revert when the process exits. Therefore, we have to loop +- until CTRL-C is received. */ +- if (strcmp(options.method->name, "quartz") == 0) { ++ /* In Quartz (OSX) and wayland, the gamma adjustments will ++ automatically revert when the process exits. ++ Therefore, we have to loop until CTRL-C is received. */ ++ if (strcmp(options.method->name, "quartz") == 0 || ++ strcmp(options.method->name, "wayland") == 0) { + fputs(_("Press ctrl-c to stop...\n"), stderr); + pause(); + } diff --git a/profile/package.mask b/profile/package.mask @@ -0,0 +1,5 @@ +# Copyright issue, see : https://github.com/martanne/abduco/issues/20 and https://bugs.debian.org/833897 +app-misc/abduco + +# last repo activity is from 2014 and there is several issues (including security ones). See https://gitlab.com/lanodan/overlay/issues/6 +dev-python/pycrypto diff --git a/profile/use.stable.mask b/profile/use.stable.mask @@ -0,0 +1 @@ +-libressl diff --git a/repo.postsync.d/example b/repo.postsync.d/example @@ -0,0 +1,51 @@ +#!/bin/sh +# Example /etc/portage/repo.postsync.d script. Make it executable (chmod +x) for +# Portage to process it. +# +# With portage-2.2.16 and newer, all repo.postsync.d hooks will be called multiple +# times after syncing each repository. +# +# Older versions of Portage support syncing only one repository. +# In those versions, the postsync.d hooks will be called only once, +# and they will not be passed any parameters. + +# On a repo.postsync.d hook call, positional parameters contain +# information about the just-synced repository. + +# Your hook can control it's actions depending on any of the three +# parameters passed in to it. +# +# They are as follows: +# +# The repository name. +repository_name=${1} +# The URI to which the repository was synced. +sync_uri=${2} +# The path to the repository. +repository_path=${3} + +# Portage assumes that a hook succeeded if it exits with 0 code. If no +# explicit exit is done, the exit code is the exit code of last spawned +# command. Since our script is a bit more complex, we want to control +# the exit code explicitly. +ret=0 + +if [ -n "${repository_name}" ]; then + # Repository name was provided, so we're in a post-repository hook. + echo "* In post-repository hook for ${repository_name}" + echo "** synced from remote repository ${sync_uri}" + echo "** synced into ${repository_path}" + + # Gentoo comes with pregenerated cache but the other repositories + # usually don't. Generate them to improve performance. + if [ "${repository_name}" != "gentoo" ]; then + if ! egencache --update --repo="${repository_name}" --jobs=4 + then + echo "!!! egencache failed!" + ret=1 + fi + fi +fi + +# Return explicit status. +exit "${ret}" diff --git a/repo.postsync.d/q-reinit b/repo.postsync.d/q-reinit @@ -0,0 +1,10 @@ +#!/bin/sh + +repository_name=$1 +repository_path=$3 + +if [ -n "${repository_name}" ]; then + q ${PORTAGE_QUIET:+-q} --reinitialize="${repository_path}" +fi + +: diff --git a/repos.conf/gentoo.conf b/repos.conf/gentoo.conf @@ -6,4 +6,5 @@ sync-depth = 1 sync-type = git sync-uri = https://anongit.gentoo.org/git/repo/gentoo.git sync-depth = 1 +priority = 100 auto-sync = yes